mirror of
https://github.com/haileys/bark
synced 2024-09-20 14:12:03 +00:00
set expedited forwarding on broadcast packets
This commit is contained in:
parent
ade2ee4d57
commit
a863d82c79
3 changed files with 19 additions and 1 deletions
10
Cargo.lock
generated
10
Cargo.lock
generated
|
@ -436,6 +436,15 @@ version = "2.5.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
version = "0.2.1"
|
||||
|
@ -491,6 +500,7 @@ dependencies = [
|
|||
"bitflags",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"memoffset",
|
||||
"static_assertions",
|
||||
]
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ edition = "2021"
|
|||
bytemuck = { version = "1.13.1", features = ["derive"] }
|
||||
cpal = "0.15.2"
|
||||
derive_more = "0.99.17"
|
||||
nix = { version = "0.26.2", features = ["time"], default-features = false }
|
||||
nix = { version = "0.26.2", features = ["time", "socket", "net"], default-features = false }
|
||||
static_assertions = "1.1.0"
|
||||
structopt = "0.3.26"
|
||||
termcolor = "1.2.0"
|
||||
|
|
|
@ -5,6 +5,7 @@ mod status;
|
|||
mod resample;
|
||||
|
||||
use std::net::{UdpSocket, Ipv4Addr, SocketAddrV4};
|
||||
use std::os::fd::AsRawFd;
|
||||
use std::process::ExitCode;
|
||||
use std::sync::{Mutex, Arc};
|
||||
use std::time::Duration;
|
||||
|
@ -12,6 +13,7 @@ use std::time::Duration;
|
|||
use bytemuck::Zeroable;
|
||||
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
|
||||
use cpal::{OutputCallbackInfo, StreamConfig, InputCallbackInfo, BufferSize, SupportedBufferSize};
|
||||
use nix::sys::socket::sockopt::IpTos;
|
||||
use structopt::StructOpt;
|
||||
|
||||
use protocol::{TimestampMicros, AudioPacket, PacketBuffer, TimePacket, MAX_PACKET_SIZE, TimePacketPadding};
|
||||
|
@ -93,6 +95,12 @@ fn run_stream(opt: StreamOpt) -> Result<(), RunError> {
|
|||
socket.join_multicast_v4(&opt.group, bind.ip())
|
||||
.map_err(RunError::JoinMulticast)?;
|
||||
|
||||
const IPTOS_DSCP_EF: i32 = 0xb8;
|
||||
if let Err(e) = nix::sys::socket::setsockopt(socket.as_raw_fd(), IpTos, &IPTOS_DSCP_EF) {
|
||||
eprintln!("warning: failed to set IPTOS_DSCP_EF (expedited forwarding) on broadcast socket: {e:?}");
|
||||
}
|
||||
|
||||
|
||||
// we don't need it:
|
||||
let _ = socket.set_multicast_loop_v4(false);
|
||||
|
||||
|
|
Loading…
Reference in a new issue