Lines Matching refs:nh
276 static void set_ip_addr(struct sk_buff *skb, struct iphdr *nh, in set_ip_addr() argument
281 if (nh->protocol == IPPROTO_TCP) { in set_ip_addr()
285 } else if (nh->protocol == IPPROTO_UDP) { in set_ip_addr()
298 csum_replace4(&nh->check, *addr, new_addr); in set_ip_addr()
350 static void set_ipv6_fl(struct ipv6hdr *nh, u32 fl, u32 mask) in set_ipv6_fl() argument
353 SET_MASKED(nh->flow_lbl[0], (u8)(fl >> 16), (u8)(mask >> 16)); in set_ipv6_fl()
354 SET_MASKED(nh->flow_lbl[1], (u8)(fl >> 8), (u8)(mask >> 8)); in set_ipv6_fl()
355 SET_MASKED(nh->flow_lbl[2], (u8)fl, (u8)mask); in set_ipv6_fl()
358 static void set_ip_ttl(struct sk_buff *skb, struct iphdr *nh, u8 new_ttl, in set_ip_ttl() argument
361 new_ttl = MASKED(nh->ttl, new_ttl, mask); in set_ip_ttl()
363 csum_replace2(&nh->check, htons(nh->ttl << 8), htons(new_ttl << 8)); in set_ip_ttl()
364 nh->ttl = new_ttl; in set_ip_ttl()
371 struct iphdr *nh; in set_ipv4() local
380 nh = ip_hdr(skb); in set_ipv4()
387 new_addr = MASKED(nh->saddr, key->ipv4_src, mask->ipv4_src); in set_ipv4()
389 if (unlikely(new_addr != nh->saddr)) { in set_ipv4()
390 set_ip_addr(skb, nh, &nh->saddr, new_addr); in set_ipv4()
395 new_addr = MASKED(nh->daddr, key->ipv4_dst, mask->ipv4_dst); in set_ipv4()
397 if (unlikely(new_addr != nh->daddr)) { in set_ipv4()
398 set_ip_addr(skb, nh, &nh->daddr, new_addr); in set_ipv4()
403 ipv4_change_dsfield(nh, ~mask->ipv4_tos, key->ipv4_tos); in set_ipv4()
404 flow_key->ip.tos = nh->tos; in set_ipv4()
407 set_ip_ttl(skb, nh, key->ipv4_ttl, mask->ipv4_ttl); in set_ipv4()
408 flow_key->ip.ttl = nh->ttl; in set_ipv4()
423 struct ipv6hdr *nh; in set_ipv6() local
431 nh = ipv6_hdr(skb); in set_ipv6()
438 __be32 *saddr = (__be32 *)&nh->saddr; in set_ipv6()
454 __be32 *daddr = (__be32 *)&nh->daddr; in set_ipv6()
460 if (ipv6_ext_hdr(nh->nexthdr)) in set_ipv6()
473 ipv6_change_dsfield(nh, ~mask->ipv6_tclass, key->ipv6_tclass); in set_ipv6()
474 flow_key->ip.tos = ipv6_get_dsfield(nh); in set_ipv6()
477 set_ipv6_fl(nh, ntohl(key->ipv6_label), in set_ipv6()
480 *(__be32 *)nh & htonl(IPV6_FLOWINFO_FLOWLABEL); in set_ipv6()
483 SET_MASKED(nh->hop_limit, key->ipv6_hlimit, mask->ipv6_hlimit); in set_ipv6()
484 flow_key->ip.ttl = nh->hop_limit; in set_ipv6()