aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2007-03-19 18:33:04 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-26 01:24:41 -0400
commit98e399f82ab3a6d863d1d4a7ea48925cc91c830e (patch)
tree5f84043aeec1ec27c2e8e6cc25b5d2e6c3d07343 /net/ipv6
parent31713c333ddbb66d694829082620b69b71c4b09a (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.c3
-rw-r--r--net/ipv6/netfilter/ip6t_LOG.c5
-rw-r--r--net/ipv6/netfilter/ip6t_eui64.c4
-rw-r--r--net/ipv6/xfrm6_mode_beet.c4
-rw-r--r--net/ipv6/xfrm6_mode_tunnel.c4
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