修复广播问题
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
use std::io;
|
use std::io;
|
||||||
use std::net::SocketAddrV4;
|
use std::net::{Ipv4Addr, SocketAddrV4};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
use packet::ip::ipv4::packet::IpV4Packet;
|
use packet::ip::ipv4::packet::IpV4Packet;
|
||||||
@@ -121,12 +121,14 @@ pub async fn base_handle(sender: &ChannelSender, buf: &mut [u8],
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Protocol::Udp => {
|
Protocol::Udp => {
|
||||||
client_cipher.encrypt_ipv4(&mut net_packet)?;
|
|
||||||
let multicast_members = if let Some(igmp_server) = igmp_server {
|
let multicast_members = if let Some(igmp_server) = igmp_server {
|
||||||
igmp_server.load(&dest_ip)
|
igmp_server.load(&dest_ip)
|
||||||
} else {
|
} else {
|
||||||
|
//当作广播处理
|
||||||
|
net_packet.set_destination(Ipv4Addr::BROADCAST);
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
client_cipher.encrypt_ipv4(&mut net_packet)?;
|
||||||
broadcast(server_cipher, multicast_members, sender, &mut net_packet, ¤t_device).await?;
|
broadcast(server_cipher, multicast_members, sender, &mut net_packet, ¤t_device).await?;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
@@ -173,8 +175,6 @@ pub async fn base_handle(sender: &ChannelSender, buf: &mut [u8],
|
|||||||
let mut ipv4_packet = IpV4Packet::new(net_packet.payload_mut())?;
|
let mut ipv4_packet = IpV4Packet::new(net_packet.payload_mut())?;
|
||||||
ipv4_packet.set_source_ip(source_ip);
|
ipv4_packet.set_source_ip(source_ip);
|
||||||
ipv4_packet.update_checksum();
|
ipv4_packet.update_checksum();
|
||||||
}else{
|
|
||||||
log::warn!("不存在接口 {:?}",dest_addr);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Protocol::Udp => {
|
Protocol::Udp => {
|
||||||
|
|||||||
Reference in New Issue
Block a user