@@ -185,10 +185,6 @@ static int pop_mpls(struct sk_buff *skb, struct sw_flow_key *key,
185
185
return 0 ;
186
186
}
187
187
188
- /* 'KEY' must not have any bits set outside of the 'MASK' */
189
- #define MASKED (OLD , KEY , MASK ) ((KEY) | ((OLD) & ~(MASK)))
190
- #define SET_MASKED (OLD , KEY , MASK ) ((OLD) = MASKED(OLD, KEY, MASK))
191
-
192
188
static int set_mpls (struct sk_buff * skb , struct sw_flow_key * flow_key ,
193
189
const __be32 * mpls_lse , const __be32 * mask )
194
190
{
@@ -201,7 +197,7 @@ static int set_mpls(struct sk_buff *skb, struct sw_flow_key *flow_key,
201
197
return err ;
202
198
203
199
stack = (__be32 * )skb_mpls_header (skb );
204
- lse = MASKED (* stack , * mpls_lse , * mask );
200
+ lse = OVS_MASKED (* stack , * mpls_lse , * mask );
205
201
if (skb -> ip_summed == CHECKSUM_COMPLETE ) {
206
202
__be32 diff [] = { ~(* stack ), lse };
207
203
@@ -244,9 +240,9 @@ static void ether_addr_copy_masked(u8 *dst_, const u8 *src_, const u8 *mask_)
244
240
const u16 * src = (const u16 * )src_ ;
245
241
const u16 * mask = (const u16 * )mask_ ;
246
242
247
- SET_MASKED (dst [0 ], src [0 ], mask [0 ]);
248
- SET_MASKED (dst [1 ], src [1 ], mask [1 ]);
249
- SET_MASKED (dst [2 ], src [2 ], mask [2 ]);
243
+ OVS_SET_MASKED (dst [0 ], src [0 ], mask [0 ]);
244
+ OVS_SET_MASKED (dst [1 ], src [1 ], mask [1 ]);
245
+ OVS_SET_MASKED (dst [2 ], src [2 ], mask [2 ]);
250
246
}
251
247
252
248
static int set_eth_addr (struct sk_buff * skb , struct sw_flow_key * flow_key ,
@@ -338,10 +334,10 @@ static void update_ipv6_checksum(struct sk_buff *skb, u8 l4_proto,
338
334
static void mask_ipv6_addr (const __be32 old [4 ], const __be32 addr [4 ],
339
335
const __be32 mask [4 ], __be32 masked [4 ])
340
336
{
341
- masked [0 ] = MASKED (old [0 ], addr [0 ], mask [0 ]);
342
- masked [1 ] = MASKED (old [1 ], addr [1 ], mask [1 ]);
343
- masked [2 ] = MASKED (old [2 ], addr [2 ], mask [2 ]);
344
- masked [3 ] = MASKED (old [3 ], addr [3 ], mask [3 ]);
337
+ masked [0 ] = OVS_MASKED (old [0 ], addr [0 ], mask [0 ]);
338
+ masked [1 ] = OVS_MASKED (old [1 ], addr [1 ], mask [1 ]);
339
+ masked [2 ] = OVS_MASKED (old [2 ], addr [2 ], mask [2 ]);
340
+ masked [3 ] = OVS_MASKED (old [3 ], addr [3 ], mask [3 ]);
345
341
}
346
342
347
343
static void set_ipv6_addr (struct sk_buff * skb , u8 l4_proto ,
@@ -358,15 +354,15 @@ static void set_ipv6_addr(struct sk_buff *skb, u8 l4_proto,
358
354
static void set_ipv6_fl (struct ipv6hdr * nh , u32 fl , u32 mask )
359
355
{
360
356
/* Bits 21-24 are always unmasked, so this retains their values. */
361
- SET_MASKED (nh -> flow_lbl [0 ], (u8 )(fl >> 16 ), (u8 )(mask >> 16 ));
362
- SET_MASKED (nh -> flow_lbl [1 ], (u8 )(fl >> 8 ), (u8 )(mask >> 8 ));
363
- SET_MASKED (nh -> flow_lbl [2 ], (u8 )fl , (u8 )mask );
357
+ OVS_SET_MASKED (nh -> flow_lbl [0 ], (u8 )(fl >> 16 ), (u8 )(mask >> 16 ));
358
+ OVS_SET_MASKED (nh -> flow_lbl [1 ], (u8 )(fl >> 8 ), (u8 )(mask >> 8 ));
359
+ OVS_SET_MASKED (nh -> flow_lbl [2 ], (u8 )fl , (u8 )mask );
364
360
}
365
361
366
362
static void set_ip_ttl (struct sk_buff * skb , struct iphdr * nh , u8 new_ttl ,
367
363
u8 mask )
368
364
{
369
- new_ttl = MASKED (nh -> ttl , new_ttl , mask );
365
+ new_ttl = OVS_MASKED (nh -> ttl , new_ttl , mask );
370
366
371
367
csum_replace2 (& nh -> check , htons (nh -> ttl << 8 ), htons (new_ttl << 8 ));
372
368
nh -> ttl = new_ttl ;
@@ -392,15 +388,15 @@ static int set_ipv4(struct sk_buff *skb, struct sw_flow_key *flow_key,
392
388
* makes sense to check if the value actually changed.
393
389
*/
394
390
if (mask -> ipv4_src ) {
395
- new_addr = MASKED (nh -> saddr , key -> ipv4_src , mask -> ipv4_src );
391
+ new_addr = OVS_MASKED (nh -> saddr , key -> ipv4_src , mask -> ipv4_src );
396
392
397
393
if (unlikely (new_addr != nh -> saddr )) {
398
394
set_ip_addr (skb , nh , & nh -> saddr , new_addr );
399
395
flow_key -> ipv4 .addr .src = new_addr ;
400
396
}
401
397
}
402
398
if (mask -> ipv4_dst ) {
403
- new_addr = MASKED (nh -> daddr , key -> ipv4_dst , mask -> ipv4_dst );
399
+ new_addr = OVS_MASKED (nh -> daddr , key -> ipv4_dst , mask -> ipv4_dst );
404
400
405
401
if (unlikely (new_addr != nh -> daddr )) {
406
402
set_ip_addr (skb , nh , & nh -> daddr , new_addr );
@@ -488,7 +484,8 @@ static int set_ipv6(struct sk_buff *skb, struct sw_flow_key *flow_key,
488
484
* (__be32 * )nh & htonl (IPV6_FLOWINFO_FLOWLABEL );
489
485
}
490
486
if (mask -> ipv6_hlimit ) {
491
- SET_MASKED (nh -> hop_limit , key -> ipv6_hlimit , mask -> ipv6_hlimit );
487
+ OVS_SET_MASKED (nh -> hop_limit , key -> ipv6_hlimit ,
488
+ mask -> ipv6_hlimit );
492
489
flow_key -> ip .ttl = nh -> hop_limit ;
493
490
}
494
491
return 0 ;
@@ -517,8 +514,8 @@ static int set_udp(struct sk_buff *skb, struct sw_flow_key *flow_key,
517
514
518
515
uh = udp_hdr (skb );
519
516
/* Either of the masks is non-zero, so do not bother checking them. */
520
- src = MASKED (uh -> source , key -> udp_src , mask -> udp_src );
521
- dst = MASKED (uh -> dest , key -> udp_dst , mask -> udp_dst );
517
+ src = OVS_MASKED (uh -> source , key -> udp_src , mask -> udp_src );
518
+ dst = OVS_MASKED (uh -> dest , key -> udp_dst , mask -> udp_dst );
522
519
523
520
if (uh -> check && skb -> ip_summed != CHECKSUM_PARTIAL ) {
524
521
if (likely (src != uh -> source )) {
@@ -558,12 +555,12 @@ static int set_tcp(struct sk_buff *skb, struct sw_flow_key *flow_key,
558
555
return err ;
559
556
560
557
th = tcp_hdr (skb );
561
- src = MASKED (th -> source , key -> tcp_src , mask -> tcp_src );
558
+ src = OVS_MASKED (th -> source , key -> tcp_src , mask -> tcp_src );
562
559
if (likely (src != th -> source )) {
563
560
set_tp_port (skb , & th -> source , src , & th -> check );
564
561
flow_key -> tp .src = src ;
565
562
}
566
- dst = MASKED (th -> dest , key -> tcp_dst , mask -> tcp_dst );
563
+ dst = OVS_MASKED (th -> dest , key -> tcp_dst , mask -> tcp_dst );
567
564
if (likely (dst != th -> dest )) {
568
565
set_tp_port (skb , & th -> dest , dst , & th -> check );
569
566
flow_key -> tp .dst = dst ;
@@ -590,8 +587,8 @@ static int set_sctp(struct sk_buff *skb, struct sw_flow_key *flow_key,
590
587
old_csum = sh -> checksum ;
591
588
old_correct_csum = sctp_compute_cksum (skb , sctphoff );
592
589
593
- sh -> source = MASKED (sh -> source , key -> sctp_src , mask -> sctp_src );
594
- sh -> dest = MASKED (sh -> dest , key -> sctp_dst , mask -> sctp_dst );
590
+ sh -> source = OVS_MASKED (sh -> source , key -> sctp_src , mask -> sctp_src );
591
+ sh -> dest = OVS_MASKED (sh -> dest , key -> sctp_dst , mask -> sctp_dst );
595
592
596
593
new_csum = sctp_compute_cksum (skb , sctphoff );
597
594
@@ -770,12 +767,13 @@ static int execute_masked_set_action(struct sk_buff *skb,
770
767
771
768
switch (nla_type (a )) {
772
769
case OVS_KEY_ATTR_PRIORITY :
773
- SET_MASKED (skb -> priority , nla_get_u32 (a ), * get_mask (a , u32 * ));
770
+ OVS_SET_MASKED (skb -> priority , nla_get_u32 (a ),
771
+ * get_mask (a , u32 * ));
774
772
flow_key -> phy .priority = skb -> priority ;
775
773
break ;
776
774
777
775
case OVS_KEY_ATTR_SKB_MARK :
778
- SET_MASKED (skb -> mark , nla_get_u32 (a ), * get_mask (a , u32 * ));
776
+ OVS_SET_MASKED (skb -> mark , nla_get_u32 (a ), * get_mask (a , u32 * ));
779
777
flow_key -> phy .skb_mark = skb -> mark ;
780
778
break ;
781
779
0 commit comments