@@ -18,11 +18,11 @@ use network_types::{
1818} ;
1919use oryx_common:: {
2020 protocols:: { LinkProtocol , NetworkProtocol , Protocol , TransportProtocol } ,
21- ProtoHdr , RawPacket , MAX_FIREWALL_RULES , MAX_RULES_PORT ,
21+ ProtoHdr , RawFrame , RawPacket , MAX_FIREWALL_RULES , MAX_RULES_PORT ,
2222} ;
2323
2424#[ map]
25- static DATA : RingBuf = RingBuf :: with_byte_size ( 4096 * RawPacket :: LEN as u32 , 0 ) ;
25+ static DATA : RingBuf = RingBuf :: with_byte_size ( 4096 * RawFrame :: LEN as u32 , 0 ) ;
2626
2727#[ map]
2828static NETWORK_FILTERS : Array < u32 > = Array :: with_max_entries ( 8 , 0 ) ;
@@ -56,8 +56,8 @@ pub fn oryx(ctx: TcContext) -> i32 {
5656}
5757
5858#[ inline]
59- fn submit ( packet : RawPacket ) {
60- if let Some ( mut buf) = DATA . reserve :: < RawPacket > ( 0 ) {
59+ fn submit ( packet : RawFrame ) {
60+ if let Some ( mut buf) = DATA . reserve :: < RawFrame > ( 0 ) {
6161 unsafe { ( * buf. as_mut_ptr ( ) ) = packet } ;
6262 buf. submit ( 0 ) ;
6363 }
@@ -183,10 +183,13 @@ fn process(ctx: TcContext) -> Result<i32, ()> {
183183 return Ok ( TC_ACT_PIPE ) ;
184184 }
185185
186- submit ( RawPacket :: Ip (
187- IpHdr :: V4 ( header) ,
188- ProtoHdr :: Tcp ( unsafe { * tcphdr } ) ,
189- ) ) ;
186+ submit ( RawFrame {
187+ header : ethhdr,
188+ payload : RawPacket :: Ip (
189+ IpHdr :: V4 ( header) ,
190+ ProtoHdr :: Tcp ( unsafe { * tcphdr } ) ,
191+ ) ,
192+ } ) ;
190193 }
191194 IpProto :: Udp => {
192195 let udphdr: * const UdpHdr = ptr_at ( & ctx, EthHdr :: LEN + Ipv4Hdr :: LEN ) ?;
@@ -207,20 +210,26 @@ fn process(ctx: TcContext) -> Result<i32, ()> {
207210 return Ok ( TC_ACT_PIPE ) ;
208211 }
209212
210- submit ( RawPacket :: Ip (
211- IpHdr :: V4 ( header) ,
212- ProtoHdr :: Udp ( unsafe { * udphdr } ) ,
213- ) ) ;
213+ submit ( RawFrame {
214+ header : ethhdr,
215+ payload : RawPacket :: Ip (
216+ IpHdr :: V4 ( header) ,
217+ ProtoHdr :: Udp ( unsafe { * udphdr } ) ,
218+ ) ,
219+ } ) ;
214220 }
215221 IpProto :: Icmp => {
216222 if filter_packet ( Protocol :: Network ( NetworkProtocol :: Icmp ) ) {
217223 return Ok ( TC_ACT_PIPE ) ;
218224 }
219225 let icmphdr: * const IcmpHdr = ptr_at ( & ctx, EthHdr :: LEN + Ipv4Hdr :: LEN ) ?;
220- submit ( RawPacket :: Ip (
221- IpHdr :: V4 ( header) ,
222- ProtoHdr :: Icmp ( unsafe { * icmphdr } ) ,
223- ) ) ;
226+ submit ( RawFrame {
227+ header : ethhdr,
228+ payload : RawPacket :: Ip (
229+ IpHdr :: V4 ( header) ,
230+ ProtoHdr :: Icmp ( unsafe { * icmphdr } ) ,
231+ ) ,
232+ } ) ;
224233 }
225234 _ => { }
226235 }
@@ -252,10 +261,13 @@ fn process(ctx: TcContext) -> Result<i32, ()> {
252261 {
253262 return Ok ( TC_ACT_PIPE ) ;
254263 }
255- submit ( RawPacket :: Ip (
256- IpHdr :: V6 ( header) ,
257- ProtoHdr :: Tcp ( unsafe { * tcphdr } ) ,
258- ) ) ;
264+ submit ( RawFrame {
265+ header : ethhdr,
266+ payload : RawPacket :: Ip (
267+ IpHdr :: V6 ( header) ,
268+ ProtoHdr :: Tcp ( unsafe { * tcphdr } ) ,
269+ ) ,
270+ } ) ;
259271 }
260272 IpProto :: Udp => {
261273 let udphdr: * const UdpHdr = ptr_at ( & ctx, EthHdr :: LEN + Ipv6Hdr :: LEN ) ?;
@@ -275,20 +287,26 @@ fn process(ctx: TcContext) -> Result<i32, ()> {
275287 {
276288 return Ok ( TC_ACT_PIPE ) ;
277289 }
278- submit ( RawPacket :: Ip (
279- IpHdr :: V6 ( header) ,
280- ProtoHdr :: Udp ( unsafe { * udphdr } ) ,
281- ) ) ;
290+ submit ( RawFrame {
291+ header : ethhdr,
292+ payload : RawPacket :: Ip (
293+ IpHdr :: V6 ( header) ,
294+ ProtoHdr :: Udp ( unsafe { * udphdr } ) ,
295+ ) ,
296+ } ) ;
282297 }
283298 IpProto :: Icmp => {
284299 if filter_packet ( Protocol :: Network ( NetworkProtocol :: Icmp ) ) {
285300 return Ok ( TC_ACT_PIPE ) ;
286301 }
287302 let icmphdr: * const IcmpHdr = ptr_at ( & ctx, EthHdr :: LEN + Ipv6Hdr :: LEN ) ?;
288- submit ( RawPacket :: Ip (
289- IpHdr :: V6 ( header) ,
290- ProtoHdr :: Icmp ( unsafe { * icmphdr } ) ,
291- ) ) ;
303+ submit ( RawFrame {
304+ header : ethhdr,
305+ payload : RawPacket :: Ip (
306+ IpHdr :: V6 ( header) ,
307+ ProtoHdr :: Icmp ( unsafe { * icmphdr } ) ,
308+ ) ,
309+ } ) ;
292310 }
293311 _ => { }
294312 }
@@ -298,7 +316,10 @@ fn process(ctx: TcContext) -> Result<i32, ()> {
298316 return Ok ( TC_ACT_PIPE ) ;
299317 }
300318 let header: ArpHdr = ctx. load ( EthHdr :: LEN ) . map_err ( |_| ( ) ) ?;
301- submit ( RawPacket :: Arp ( header) ) ;
319+ submit ( RawFrame {
320+ header : ethhdr,
321+ payload : RawPacket :: Arp ( header) ,
322+ } ) ;
302323 }
303324 _ => { }
304325 } ;
0 commit comments