Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitebba95f

Browse files
committed
inetstack: layer2: simplified naming and reduced clutter
Removed visual and syntactic clutter by avoiding unnecesary typeannotations. This created room for better naming.
1 parent6042e01 commitebba95f

File tree

1 file changed

+34
-31
lines changed
  • src/inetstack/protocols/layer2

1 file changed

+34
-31
lines changed

‎src/inetstack/protocols/layer2/mod.rs

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use ::std::ops::{Deref, DerefMut};
3333

3434
pubstructLayer2Endpoint{
3535
layer1_endpoint:Box<dynPhysicalLayer>,
36-
local_link_addr:MacAddress,
36+
local_mac:MacAddress,
3737
}
3838

3939
#[derive(Clone)]
@@ -47,63 +47,66 @@ impl SharedLayer2Endpoint {
4747
pubfnnew<P:PhysicalLayer>(config:&Config,layer1_endpoint:P) ->Result<Self,Fail>{
4848
Ok(Self(SharedObject::new(Layer2Endpoint{
4949
layer1_endpoint:Box::new(layer1_endpoint),
50-
local_link_addr: config.local_link_addr()?,
50+
local_mac: config.local_link_addr()?,
5151
})))
5252
}
5353

5454
pubfnreceive(&mutself) ->Result<ArrayVec<(EtherType2,DemiBuffer),MAX_BATCH_SIZE_NUM_PACKETS>,Fail>{
55-
letmut batch:ArrayVec<(EtherType2,DemiBuffer),MAX_BATCH_SIZE_NUM_PACKETS> =ArrayVec::new();
56-
formutpktinself.layer1_endpoint.receive()?{
57-
let header:Ethernet2Header=matchEthernet2Header::parse_and_strip(&mutpkt){
55+
letmut batch =ArrayVec::new();
56+
formutpacketinself.layer1_endpoint.receive()?{
57+
let header=matchEthernet2Header::parse_and_strip(&mutpacket){
5858
Ok(result) => result,
5959
Err(e) =>{
6060
// TODO: Collect dropped packet statistics.
61-
let cause:&str ="Invalid Ethernet header";
62-
warn!("{}: {:?}", cause, e);
61+
warn!("Invalid Ethernet header: {:?}", e);
6362
continue;
6463
},
6564
};
6665
debug!("L2 INCOMING {:?}", header);
67-
ifself.local_link_addr != header.dst_addr()
68-
&& !header.dst_addr().is_broadcast()
69-
&& !header.dst_addr().is_multicast()
70-
{
71-
let cause:&str ="invalid link address";
72-
warn!("dropping packet: {}", cause);
66+
ifself.bad_dst(&header){
67+
warn!("dropping packet: invalid link address");
7368
}
74-
batch.push((header.ether_type(),pkt))
69+
batch.push((header.ether_type(),packet))
7570
}
7671
Ok(batch)
7772
}
7873

79-
pubfntransmit_arp_packet(&mutself,remote_link_addr:MacAddress,pkt:DemiBuffer) ->Result<(),Fail>{
80-
letmutpkts:ArrayVec<DemiBuffer,MAX_BATCH_SIZE_NUM_PACKETS> =ArrayVec::new();
81-
pkts.push(pkt);
82-
self.transmit(remote_link_addr,EtherType2::Arp,pkts)
74+
pubfntransmit_arp_packet(&mutself,remote_mac:MacAddress,packet:DemiBuffer) ->Result<(),Fail>{
75+
letmutpackets =ArrayVec::new();
76+
packets.push(packet);
77+
self.transmit(remote_mac,EtherType2::Arp,packets)
8378
}
8479

85-
pubfntransmit_ipv4_packet(&mutself,remote_link_addr:MacAddress,pkt:DemiBuffer) ->Result<(),Fail>{
86-
letmut pkts:ArrayVec<DemiBuffer,MAX_BATCH_SIZE_NUM_PACKETS> =ArrayVec::new();
87-
pkts.push(pkt);
88-
self.transmit(remote_link_addr,EtherType2::Ipv4, pkts)
80+
pubfntransmit_ipv4_packet(&mutself,remote_mac:MacAddress,packet:DemiBuffer) ->Result<(),Fail>{
81+
letmut packets =ArrayVec::new();
82+
packets.push(packet);
83+
self.transmit(remote_mac,EtherType2::Ipv4, packets)
84+
}
85+
86+
fnbad_dst(&self,header:&Ethernet2Header) ->bool{
87+
let dst_mac = header.dst_addr();
88+
self.local_mac != dst_mac && !dst_mac.is_broadcast() && !dst_mac.is_multicast()
8989
}
9090

9191
fntransmit(
9292
&mutself,
93-
remote_link_addr:MacAddress,
94-
eth2_type:EtherType2,
95-
mutpkts:ArrayVec<DemiBuffer,MAX_BATCH_SIZE_NUM_PACKETS>,
93+
remote_mac:MacAddress,
94+
ether_type:EtherType2,
95+
mutpackets:ArrayVec<DemiBuffer,MAX_BATCH_SIZE_NUM_PACKETS>,
9696
) ->Result<(),Fail>{
97-
let eth2_header:Ethernet2Header =Ethernet2Header::new(remote_link_addr,self.local_link_addr, eth2_type);
98-
debug!("L2 OUTGOING {:?}", eth2_header);
99-
for pktin pkts.iter_mut(){
100-
eth2_header.serialize_and_attach(pkt);
97+
let header =Ethernet2Header::new(remote_mac,self.local_mac, ether_type);
98+
99+
debug!("L2 OUTGOING {:?}", header);
100+
101+
for packetin packets.iter_mut(){
102+
header.serialize_and_attach(packet);
101103
}
102-
self.layer1_endpoint.transmit(pkts)
104+
105+
self.layer1_endpoint.transmit(packets)
103106
}
104107

105108
pubfnget_local_link_addr(&self) ->MacAddress{
106-
self.local_link_addr
109+
self.local_mac
107110
}
108111
}
109112

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp