diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-03-19 18:33:04 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:24:41 -0400 |
commit | 98e399f82ab3a6d863d1d4a7ea48925cc91c830e (patch) | |
tree | 5f84043aeec1ec27c2e8e6cc25b5d2e6c3d07343 /net/ipv6 | |
parent | 31713c333ddbb66d694829082620b69b71c4b09a (diff) |
[SK_BUFF]: Introduce skb_mac_header()
For the places where we need a pointer to the mac header, it is still legal to
touch skb->mac.raw directly if just adding to, subtracting from or setting it
to another layer header.
This one also converts some more cases to skb_reset_mac_header() that my
regex missed as it had no spaces before nor after '=', ugh.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ndisc.c | 3 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_LOG.c | 5 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6t_eui64.c | 4 | ||||
-rw-r--r-- | net/ipv6/xfrm6_mode_beet.c | 4 | ||||
-rw-r--r-- | net/ipv6/xfrm6_mode_tunnel.c | 4 |
5 files changed, 11 insertions, 9 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 053147a0027e..a3e3d9e2f44b 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -828,7 +828,8 @@ static void ndisc_recv_ns(struct sk_buff *skb) | |||
828 | if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) { | 828 | if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) { |
829 | if (dad) { | 829 | if (dad) { |
830 | if (dev->type == ARPHRD_IEEE802_TR) { | 830 | if (dev->type == ARPHRD_IEEE802_TR) { |
831 | unsigned char *sadr = skb->mac.raw; | 831 | const unsigned char *sadr; |
832 | sadr = skb_mac_header(skb); | ||
832 | if (((sadr[8] ^ dev->dev_addr[0]) & 0x7f) == 0 && | 833 | if (((sadr[8] ^ dev->dev_addr[0]) & 0x7f) == 0 && |
833 | sadr[9] == dev->dev_addr[1] && | 834 | sadr[9] == dev->dev_addr[1] && |
834 | sadr[10] == dev->dev_addr[2] && | 835 | sadr[10] == dev->dev_addr[2] && |
diff --git a/net/ipv6/netfilter/ip6t_LOG.c b/net/ipv6/netfilter/ip6t_LOG.c index afaa039d0b7b..fc9e51a77784 100644 --- a/net/ipv6/netfilter/ip6t_LOG.c +++ b/net/ipv6/netfilter/ip6t_LOG.c | |||
@@ -397,7 +397,7 @@ ip6t_log_packet(unsigned int pf, | |||
397 | printk("MAC="); | 397 | printk("MAC="); |
398 | if (skb->dev && (len = skb->dev->hard_header_len) && | 398 | if (skb->dev && (len = skb->dev->hard_header_len) && |
399 | skb->mac.raw != skb->nh.raw) { | 399 | skb->mac.raw != skb->nh.raw) { |
400 | unsigned char *p = skb->mac.raw; | 400 | const unsigned char *p = skb_mac_header(skb); |
401 | int i; | 401 | int i; |
402 | 402 | ||
403 | if (skb->dev->type == ARPHRD_SIT && | 403 | if (skb->dev->type == ARPHRD_SIT && |
@@ -412,7 +412,8 @@ ip6t_log_packet(unsigned int pf, | |||
412 | printk(" "); | 412 | printk(" "); |
413 | 413 | ||
414 | if (skb->dev->type == ARPHRD_SIT) { | 414 | if (skb->dev->type == ARPHRD_SIT) { |
415 | struct iphdr *iph = (struct iphdr *)skb->mac.raw; | 415 | const struct iphdr *iph = |
416 | (struct iphdr *)skb_mac_header(skb); | ||
416 | printk("TUNNEL=%u.%u.%u.%u->%u.%u.%u.%u ", | 417 | printk("TUNNEL=%u.%u.%u.%u->%u.%u.%u.%u ", |
417 | NIPQUAD(iph->saddr), | 418 | NIPQUAD(iph->saddr), |
418 | NIPQUAD(iph->daddr)); | 419 | NIPQUAD(iph->daddr)); |
diff --git a/net/ipv6/netfilter/ip6t_eui64.c b/net/ipv6/netfilter/ip6t_eui64.c index 967bed71d4a8..c2676066a80f 100644 --- a/net/ipv6/netfilter/ip6t_eui64.c +++ b/net/ipv6/netfilter/ip6t_eui64.c | |||
@@ -32,8 +32,8 @@ match(const struct sk_buff *skb, | |||
32 | unsigned char eui64[8]; | 32 | unsigned char eui64[8]; |
33 | int i = 0; | 33 | int i = 0; |
34 | 34 | ||
35 | if (!(skb->mac.raw >= skb->head && | 35 | if (!(skb_mac_header(skb) >= skb->head && |
36 | (skb->mac.raw + ETH_HLEN) <= skb->data) && | 36 | (skb_mac_header(skb) + ETH_HLEN) <= skb->data) && |
37 | offset != 0) { | 37 | offset != 0) { |
38 | *hotdrop = 1; | 38 | *hotdrop = 1; |
39 | return 0; | 39 | return 0; |
diff --git a/net/ipv6/xfrm6_mode_beet.c b/net/ipv6/xfrm6_mode_beet.c index 53cfe1a10ccd..79364b1e965a 100644 --- a/net/ipv6/xfrm6_mode_beet.c +++ b/net/ipv6/xfrm6_mode_beet.c | |||
@@ -70,9 +70,9 @@ static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb) | |||
70 | memmove(skb->data, skb->nh.raw, size); | 70 | memmove(skb->data, skb->nh.raw, size); |
71 | skb->nh.raw = skb->data; | 71 | skb->nh.raw = skb->data; |
72 | 72 | ||
73 | old_mac = skb->mac.raw; | 73 | old_mac = skb_mac_header(skb); |
74 | skb_set_mac_header(skb, -skb->mac_len); | 74 | skb_set_mac_header(skb, -skb->mac_len); |
75 | memmove(skb->mac.raw, old_mac, skb->mac_len); | 75 | memmove(skb_mac_header(skb), old_mac, skb->mac_len); |
76 | 76 | ||
77 | ip6h = skb->nh.ipv6h; | 77 | ip6h = skb->nh.ipv6h; |
78 | ip6h->payload_len = htons(skb->len - size); | 78 | ip6h->payload_len = htons(skb->len - size); |
diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c index d2c560c181a1..5bb0677d3730 100644 --- a/net/ipv6/xfrm6_mode_tunnel.c +++ b/net/ipv6/xfrm6_mode_tunnel.c | |||
@@ -108,9 +108,9 @@ static int xfrm6_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) | |||
108 | ip6ip_ecn_decapsulate(skb); | 108 | ip6ip_ecn_decapsulate(skb); |
109 | skb->protocol = htons(ETH_P_IP); | 109 | skb->protocol = htons(ETH_P_IP); |
110 | } | 110 | } |
111 | old_mac = skb->mac.raw; | 111 | old_mac = skb_mac_header(skb); |
112 | skb_set_mac_header(skb, -skb->mac_len); | 112 | skb_set_mac_header(skb, -skb->mac_len); |
113 | memmove(skb->mac.raw, old_mac, skb->mac_len); | 113 | memmove(skb_mac_header(skb), old_mac, skb->mac_len); |
114 | skb->nh.raw = skb->data; | 114 | skb->nh.raw = skb->data; |
115 | err = 0; | 115 | err = 0; |
116 | 116 | ||