[SK_BUFF]: unions of just one member don't get anything done, kill them

Renaming skb->h to skb->transport_header, skb->nh to skb->network_header and
skb->mac to skb->mac_header, to match the names of the associated helpers
(skb[_[re]set]_{transport,network,mac}_header).

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Arnaldo Carvalho de Melo 2007-04-10 21:21:55 -07:00 committed by David S. Miller
parent cfe1fc7759
commit b0e380b1d8
46 changed files with 162 additions and 165 deletions

View file

@ -519,9 +519,12 @@ static int arcnet_header(struct sk_buff *skb, struct net_device *dev,
* real header when we do rebuild_header. * real header when we do rebuild_header.
*/ */
*(uint16_t *) skb_push(skb, 2) = type; *(uint16_t *) skb_push(skb, 2) = type;
if (skb->nh.raw - skb->mac.raw != 2) /*
* XXX: Why not use skb->mac_len?
*/
if (skb->network_header - skb->mac_header != 2)
BUGMSG(D_NORMAL, "arcnet_header: Yikes! diff (%d) is not 2!\n", BUGMSG(D_NORMAL, "arcnet_header: Yikes! diff (%d) is not 2!\n",
(int)(skb->nh.raw - skb->mac.raw)); (int)(skb->network_header - skb->mac_header));
return -2; /* return error -- can't transmit yet! */ return -2; /* return error -- can't transmit yet! */
} }
else { else {
@ -554,11 +557,13 @@ static int arcnet_rebuild_header(struct sk_buff *skb)
unsigned short type; unsigned short type;
uint8_t daddr=0; uint8_t daddr=0;
struct ArcProto *proto; struct ArcProto *proto;
/*
if (skb->nh.raw - skb->mac.raw != 2) { * XXX: Why not use skb->mac_len?
*/
if (skb->network_header - skb->mac_header != 2) {
BUGMSG(D_NORMAL, BUGMSG(D_NORMAL,
"rebuild_header: shouldn't be here! (hdrsize=%d)\n", "rebuild_header: shouldn't be here! (hdrsize=%d)\n",
(int)(skb->nh.raw - skb->mac.raw)); (int)(skb->network_header - skb->mac_header));
return 0; return 0;
} }
type = *(uint16_t *) skb_pull(skb, 2); type = *(uint16_t *) skb_pull(skb, 2);

View file

@ -885,7 +885,7 @@ static int ad_lacpdu_send(struct port *port)
skb->dev = slave->dev; skb->dev = slave->dev;
skb_reset_mac_header(skb); skb_reset_mac_header(skb);
skb->nh.raw = skb->mac.raw + ETH_HLEN; skb->network_header = skb->mac_header + ETH_HLEN;
skb->protocol = PKT_TYPE_LACPDU; skb->protocol = PKT_TYPE_LACPDU;
skb->priority = TC_PRIO_CONTROL; skb->priority = TC_PRIO_CONTROL;
@ -929,7 +929,7 @@ static int ad_marker_send(struct port *port, struct marker *marker)
skb->dev = slave->dev; skb->dev = slave->dev;
skb_reset_mac_header(skb); skb_reset_mac_header(skb);
skb->nh.raw = skb->mac.raw + ETH_HLEN; skb->network_header = skb->mac_header + ETH_HLEN;
skb->protocol = PKT_TYPE_LACPDU; skb->protocol = PKT_TYPE_LACPDU;
marker_header = (struct marker_header *)skb_put(skb, length); marker_header = (struct marker_header *)skb_put(skb, length);

View file

@ -896,7 +896,7 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[])
memcpy(data, &pkt, size); memcpy(data, &pkt, size);
skb_reset_mac_header(skb); skb_reset_mac_header(skb);
skb->nh.raw = skb->mac.raw + ETH_HLEN; skb->network_header = skb->mac_header + ETH_HLEN;
skb->protocol = pkt.type; skb->protocol = pkt.type;
skb->priority = TC_PRIO_CONTROL; skb->priority = TC_PRIO_CONTROL;
skb->dev = slave->dev; skb->dev = slave->dev;

View file

@ -1077,7 +1077,7 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb,
skb2->protocol = __constant_htons(ETH_P_802_3); skb2->protocol = __constant_htons(ETH_P_802_3);
skb_reset_mac_header(skb2); skb_reset_mac_header(skb2);
skb_reset_network_header(skb2); skb_reset_network_header(skb2);
/* skb2->nh.raw += ETH_HLEN; */ /* skb2->network_header += ETH_HLEN; */
dev_queue_xmit(skb2); dev_queue_xmit(skb2);
} }

View file

@ -275,8 +275,8 @@ static inline struct sk_buff *__vlan_put_tag(struct sk_buff *skb, unsigned short
veth->h_vlan_TCI = htons(tag); veth->h_vlan_TCI = htons(tag);
skb->protocol = __constant_htons(ETH_P_8021Q); skb->protocol = __constant_htons(ETH_P_8021Q);
skb->mac.raw -= VLAN_HLEN; skb->mac_header -= VLAN_HLEN;
skb->nh.raw -= VLAN_HLEN; skb->network_header -= VLAN_HLEN;
return skb; return skb;
} }

View file

@ -69,8 +69,8 @@
* NONE: skb is checksummed by protocol or csum is not required. * NONE: skb is checksummed by protocol or csum is not required.
* *
* PARTIAL: device is required to csum packet as seen by hard_start_xmit * PARTIAL: device is required to csum packet as seen by hard_start_xmit
* from skb->h.raw to the end and to record the checksum * from skb->transport_header to the end and to record the checksum
* at skb->h.raw+skb->csum. * at skb->transport_header + skb->csum.
* *
* Device must show its capabilities in dev->features, set * Device must show its capabilities in dev->features, set
* at device setup time. * at device setup time.
@ -188,8 +188,8 @@ enum {
* @dev: Device we arrived on/are leaving by * @dev: Device we arrived on/are leaving by
* @iif: ifindex of device we arrived on * @iif: ifindex of device we arrived on
* @h: Transport layer header * @h: Transport layer header
* @nh: Network layer header * @network_header: Network layer header
* @mac: Link layer header * @mac_header: Link layer header
* @dst: destination entry * @dst: destination entry
* @sp: the security path, used for xfrm * @sp: the security path, used for xfrm
* @cb: Control buffer. Free for use by every layer. Put private vars here * @cb: Control buffer. Free for use by every layer. Put private vars here
@ -236,18 +236,9 @@ struct sk_buff {
int iif; int iif;
/* 4 byte hole on 64 bit*/ /* 4 byte hole on 64 bit*/
union { unsigned char *transport_header;
unsigned char *raw; unsigned char *network_header;
} h; unsigned char *mac_header;
union {
unsigned char *raw;
} nh;
union {
unsigned char *raw;
} mac;
struct dst_entry *dst; struct dst_entry *dst;
struct sec_path *sp; struct sec_path *sp;
@ -953,68 +944,68 @@ static inline void skb_reserve(struct sk_buff *skb, int len)
static inline unsigned char *skb_transport_header(const struct sk_buff *skb) static inline unsigned char *skb_transport_header(const struct sk_buff *skb)
{ {
return skb->h.raw; return skb->transport_header;
} }
static inline void skb_reset_transport_header(struct sk_buff *skb) static inline void skb_reset_transport_header(struct sk_buff *skb)
{ {
skb->h.raw = skb->data; skb->transport_header = skb->data;
} }
static inline void skb_set_transport_header(struct sk_buff *skb, static inline void skb_set_transport_header(struct sk_buff *skb,
const int offset) const int offset)
{ {
skb->h.raw = skb->data + offset; skb->transport_header = skb->data + offset;
} }
static inline int skb_transport_offset(const struct sk_buff *skb) static inline int skb_transport_offset(const struct sk_buff *skb)
{ {
return skb->h.raw - skb->data; return skb->transport_header - skb->data;
} }
static inline unsigned char *skb_network_header(const struct sk_buff *skb) static inline unsigned char *skb_network_header(const struct sk_buff *skb)
{ {
return skb->nh.raw; return skb->network_header;
} }
static inline void skb_reset_network_header(struct sk_buff *skb) static inline void skb_reset_network_header(struct sk_buff *skb)
{ {
skb->nh.raw = skb->data; skb->network_header = skb->data;
} }
static inline void skb_set_network_header(struct sk_buff *skb, const int offset) static inline void skb_set_network_header(struct sk_buff *skb, const int offset)
{ {
skb->nh.raw = skb->data + offset; skb->network_header = skb->data + offset;
} }
static inline int skb_network_offset(const struct sk_buff *skb) static inline int skb_network_offset(const struct sk_buff *skb)
{ {
return skb->nh.raw - skb->data; return skb->network_header - skb->data;
} }
static inline u32 skb_network_header_len(const struct sk_buff *skb) static inline u32 skb_network_header_len(const struct sk_buff *skb)
{ {
return skb->h.raw - skb->nh.raw; return skb->transport_header - skb->network_header;
} }
static inline unsigned char *skb_mac_header(const struct sk_buff *skb) static inline unsigned char *skb_mac_header(const struct sk_buff *skb)
{ {
return skb->mac.raw; return skb->mac_header;
} }
static inline int skb_mac_header_was_set(const struct sk_buff *skb) static inline int skb_mac_header_was_set(const struct sk_buff *skb)
{ {
return skb->mac.raw != NULL; return skb->mac_header != NULL;
} }
static inline void skb_reset_mac_header(struct sk_buff *skb) static inline void skb_reset_mac_header(struct sk_buff *skb)
{ {
skb->mac.raw = skb->data; skb->mac_header = skb->data;
} }
static inline void skb_set_mac_header(struct sk_buff *skb, const int offset) static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
{ {
skb->mac.raw = skb->data + offset; skb->mac_header = skb->data + offset;
} }
/* /*

View file

@ -59,7 +59,7 @@ static int snap_rcv(struct sk_buff *skb, struct net_device *dev,
proto = find_snap_client(skb_transport_header(skb)); proto = find_snap_client(skb_transport_header(skb));
if (proto) { if (proto) {
/* Pass the frame on. */ /* Pass the frame on. */
skb->h.raw += 5; skb->transport_header += 5;
skb_pull_rcsum(skb, 5); skb_pull_rcsum(skb, 5);
rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev); rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev);
} else { } else {

View file

@ -83,7 +83,7 @@ static inline struct sk_buff *vlan_check_reorder_header(struct sk_buff *skb)
/* Lifted from Gleb's VLAN code... */ /* Lifted from Gleb's VLAN code... */
memmove(skb->data - ETH_HLEN, memmove(skb->data - ETH_HLEN,
skb->data - VLAN_ETH_HLEN, 12); skb->data - VLAN_ETH_HLEN, 12);
skb->mac.raw += VLAN_HLEN; skb->mac_header += VLAN_HLEN;
} }
} }

View file

@ -1383,10 +1383,10 @@ free_it:
* @pt - packet type * @pt - packet type
* *
* Receive a packet (in skb) from device dev. This has come from the SNAP * Receive a packet (in skb) from device dev. This has come from the SNAP
* decoder, and on entry skb->h.raw is the DDP header, skb->len is the DDP * decoder, and on entry skb->transport_header is the DDP header, skb->len
* header, skb->len is the DDP length. The physical headers have been * is the DDP header, skb->len is the DDP length. The physical headers
* extracted. PPP should probably pass frames marked as for this layer. * have been extracted. PPP should probably pass frames marked as for this
* [ie ARPHRD_ETHERTALK] * layer. [ie ARPHRD_ETHERTALK]
*/ */
static int atalk_rcv(struct sk_buff *skb, struct net_device *dev, static int atalk_rcv(struct sk_buff *skb, struct net_device *dev,
struct packet_type *pt, struct net_device *orig_dev) struct packet_type *pt, struct net_device *orig_dev)

View file

@ -174,7 +174,7 @@ static int br_nf_pre_routing_finish_ipv6(struct sk_buff *skb)
skb->dev = nf_bridge->physindev; skb->dev = nf_bridge->physindev;
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_push(skb, VLAN_HLEN); skb_push(skb, VLAN_HLEN);
skb->nh.raw -= VLAN_HLEN; skb->network_header -= VLAN_HLEN;
} }
NF_HOOK_THRESH(PF_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL, NF_HOOK_THRESH(PF_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL,
br_handle_frame_finish, 1); br_handle_frame_finish, 1);
@ -255,7 +255,7 @@ static int br_nf_pre_routing_finish_bridge(struct sk_buff *skb)
else { else {
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_pull(skb, VLAN_HLEN); skb_pull(skb, VLAN_HLEN);
skb->nh.raw += VLAN_HLEN; skb->network_header += VLAN_HLEN;
} }
skb->dst->output(skb); skb->dst->output(skb);
} }
@ -325,7 +325,7 @@ bridged_dnat:
if (skb->protocol == if (skb->protocol ==
htons(ETH_P_8021Q)) { htons(ETH_P_8021Q)) {
skb_push(skb, VLAN_HLEN); skb_push(skb, VLAN_HLEN);
skb->nh.raw -= VLAN_HLEN; skb->network_header -= VLAN_HLEN;
} }
NF_HOOK_THRESH(PF_BRIDGE, NF_BR_PRE_ROUTING, NF_HOOK_THRESH(PF_BRIDGE, NF_BR_PRE_ROUTING,
skb, skb->dev, NULL, skb, skb->dev, NULL,
@ -344,7 +344,7 @@ bridged_dnat:
skb->dev = nf_bridge->physindev; skb->dev = nf_bridge->physindev;
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_push(skb, VLAN_HLEN); skb_push(skb, VLAN_HLEN);
skb->nh.raw -= VLAN_HLEN; skb->network_header -= VLAN_HLEN;
} }
NF_HOOK_THRESH(PF_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL, NF_HOOK_THRESH(PF_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL,
br_handle_frame_finish, 1); br_handle_frame_finish, 1);
@ -497,7 +497,7 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb,
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_pull_rcsum(skb, VLAN_HLEN); skb_pull_rcsum(skb, VLAN_HLEN);
skb->nh.raw += VLAN_HLEN; skb->network_header += VLAN_HLEN;
} }
return br_nf_pre_routing_ipv6(hook, skb, in, out, okfn); return br_nf_pre_routing_ipv6(hook, skb, in, out, okfn);
} }
@ -514,7 +514,7 @@ static unsigned int br_nf_pre_routing(unsigned int hook, struct sk_buff **pskb,
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_pull_rcsum(skb, VLAN_HLEN); skb_pull_rcsum(skb, VLAN_HLEN);
skb->nh.raw += VLAN_HLEN; skb->network_header += VLAN_HLEN;
} }
if (!pskb_may_pull(skb, sizeof(struct iphdr))) if (!pskb_may_pull(skb, sizeof(struct iphdr)))
@ -595,7 +595,7 @@ static int br_nf_forward_finish(struct sk_buff *skb)
} }
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_push(skb, VLAN_HLEN); skb_push(skb, VLAN_HLEN);
skb->nh.raw -= VLAN_HLEN; skb->network_header -= VLAN_HLEN;
} }
NF_HOOK_THRESH(PF_BRIDGE, NF_BR_FORWARD, skb, in, NF_HOOK_THRESH(PF_BRIDGE, NF_BR_FORWARD, skb, in,
skb->dev, br_forward_finish, 1); skb->dev, br_forward_finish, 1);
@ -631,7 +631,7 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff **pskb,
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_pull(*pskb, VLAN_HLEN); skb_pull(*pskb, VLAN_HLEN);
(*pskb)->nh.raw += VLAN_HLEN; (*pskb)->network_header += VLAN_HLEN;
} }
nf_bridge = skb->nf_bridge; nf_bridge = skb->nf_bridge;
@ -667,13 +667,13 @@ static unsigned int br_nf_forward_arp(unsigned int hook, struct sk_buff **pskb,
if (!IS_VLAN_ARP(skb)) if (!IS_VLAN_ARP(skb))
return NF_ACCEPT; return NF_ACCEPT;
skb_pull(*pskb, VLAN_HLEN); skb_pull(*pskb, VLAN_HLEN);
(*pskb)->nh.raw += VLAN_HLEN; (*pskb)->network_header += VLAN_HLEN;
} }
if (arp_hdr(skb)->ar_pln != 4) { if (arp_hdr(skb)->ar_pln != 4) {
if (IS_VLAN_ARP(skb)) { if (IS_VLAN_ARP(skb)) {
skb_push(*pskb, VLAN_HLEN); skb_push(*pskb, VLAN_HLEN);
(*pskb)->nh.raw -= VLAN_HLEN; (*pskb)->network_header -= VLAN_HLEN;
} }
return NF_ACCEPT; return NF_ACCEPT;
} }
@ -723,7 +723,7 @@ static unsigned int br_nf_local_out(unsigned int hook, struct sk_buff **pskb,
} }
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_push(skb, VLAN_HLEN); skb_push(skb, VLAN_HLEN);
skb->nh.raw -= VLAN_HLEN; skb->network_header -= VLAN_HLEN;
} }
NF_HOOK(PF_BRIDGE, NF_BR_FORWARD, skb, realindev, skb->dev, NF_HOOK(PF_BRIDGE, NF_BR_FORWARD, skb, realindev, skb->dev,
@ -790,7 +790,7 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff **pskb,
if (skb->protocol == htons(ETH_P_8021Q)) { if (skb->protocol == htons(ETH_P_8021Q)) {
skb_pull(skb, VLAN_HLEN); skb_pull(skb, VLAN_HLEN);
skb->nh.raw += VLAN_HLEN; skb->network_header += VLAN_HLEN;
} }
nf_bridge_save_header(skb); nf_bridge_save_header(skb);

View file

@ -1077,7 +1077,7 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
skb_reset_network_header(skb2); skb_reset_network_header(skb2);
} }
skb2->h.raw = skb2->nh.raw; skb2->transport_header = skb2->network_header;
skb2->pkt_type = PACKET_OUTGOING; skb2->pkt_type = PACKET_OUTGOING;
ptype->func(skb2, skb->dev, ptype, skb->dev); ptype->func(skb2, skb->dev, ptype, skb->dev);
} }
@ -1207,7 +1207,7 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)
BUG_ON(skb_shinfo(skb)->frag_list); BUG_ON(skb_shinfo(skb)->frag_list);
skb_reset_mac_header(skb); skb_reset_mac_header(skb);
skb->mac_len = skb->nh.raw - skb->mac.raw; skb->mac_len = skb->network_header - skb->mac_header;
__skb_pull(skb, skb->mac_len); __skb_pull(skb, skb->mac_len);
if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) { if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
@ -1774,7 +1774,7 @@ int netif_receive_skb(struct sk_buff *skb)
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb_reset_transport_header(skb); skb_reset_transport_header(skb);
skb->mac_len = skb->nh.raw - skb->mac.raw; skb->mac_len = skb->network_header - skb->mac_header;
pt_prev = NULL; pt_prev = NULL;

View file

@ -2358,7 +2358,7 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
} }
skb_set_network_header(skb, skb->tail - skb->data); skb_set_network_header(skb, skb->tail - skb->data);
skb->h.raw = skb->nh.raw + sizeof(struct iphdr); skb->transport_header = skb->network_header + sizeof(struct iphdr);
skb_put(skb, sizeof(struct iphdr) + sizeof(struct udphdr)); skb_put(skb, sizeof(struct iphdr) + sizeof(struct udphdr));
iph = ip_hdr(skb); iph = ip_hdr(skb);
@ -2391,9 +2391,9 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
iph->check = 0; iph->check = 0;
iph->check = ip_fast_csum((void *)iph, iph->ihl); iph->check = ip_fast_csum((void *)iph, iph->ihl);
skb->protocol = protocol; skb->protocol = protocol;
skb->mac.raw = (skb->nh.raw - ETH_HLEN - skb->mac_header = (skb->network_header - ETH_HLEN -
pkt_dev->nr_labels * sizeof(u32) - pkt_dev->nr_labels * sizeof(u32) -
VLAN_TAG_SIZE(pkt_dev) - SVLAN_TAG_SIZE(pkt_dev)); VLAN_TAG_SIZE(pkt_dev) - SVLAN_TAG_SIZE(pkt_dev));
skb->dev = odev; skb->dev = odev;
skb->pkt_type = PACKET_HOST; skb->pkt_type = PACKET_HOST;
@ -2697,7 +2697,7 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
} }
skb_set_network_header(skb, skb->tail - skb->data); skb_set_network_header(skb, skb->tail - skb->data);
skb->h.raw = skb->nh.raw + sizeof(struct ipv6hdr); skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);
skb_put(skb, sizeof(struct ipv6hdr) + sizeof(struct udphdr)); skb_put(skb, sizeof(struct ipv6hdr) + sizeof(struct udphdr));
iph = ipv6_hdr(skb); iph = ipv6_hdr(skb);
@ -2738,9 +2738,9 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
ipv6_addr_copy(&iph->daddr, &pkt_dev->cur_in6_daddr); ipv6_addr_copy(&iph->daddr, &pkt_dev->cur_in6_daddr);
ipv6_addr_copy(&iph->saddr, &pkt_dev->cur_in6_saddr); ipv6_addr_copy(&iph->saddr, &pkt_dev->cur_in6_saddr);
skb->mac.raw = (skb->nh.raw - ETH_HLEN - skb->mac_header = (skb->network_header - ETH_HLEN -
pkt_dev->nr_labels * sizeof(u32) - pkt_dev->nr_labels * sizeof(u32) -
VLAN_TAG_SIZE(pkt_dev) - SVLAN_TAG_SIZE(pkt_dev)); VLAN_TAG_SIZE(pkt_dev) - SVLAN_TAG_SIZE(pkt_dev));
skb->protocol = protocol; skb->protocol = protocol;
skb->dev = odev; skb->dev = odev;
skb->pkt_type = PACKET_HOST; skb->pkt_type = PACKET_HOST;

View file

@ -396,9 +396,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
n->sk = NULL; n->sk = NULL;
C(tstamp); C(tstamp);
C(dev); C(dev);
C(h); C(transport_header);
C(nh); C(network_header);
C(mac); C(mac_header);
C(dst); C(dst);
dst_clone(skb->dst); dst_clone(skb->dst);
C(sp); C(sp);
@ -461,9 +461,9 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
#ifdef CONFIG_INET #ifdef CONFIG_INET
new->sp = secpath_get(old->sp); new->sp = secpath_get(old->sp);
#endif #endif
new->h.raw = old->h.raw + offset; new->transport_header = old->transport_header + offset;
new->nh.raw = old->nh.raw + offset; new->network_header = old->network_header + offset;
new->mac.raw = old->mac.raw + offset; new->mac_header = old->mac_header + offset;
memcpy(new->cb, old->cb, sizeof(old->cb)); memcpy(new->cb, old->cb, sizeof(old->cb));
new->local_df = old->local_df; new->local_df = old->local_df;
new->fclone = SKB_FCLONE_UNAVAILABLE; new->fclone = SKB_FCLONE_UNAVAILABLE;
@ -639,9 +639,9 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail,
skb->end = data + size; skb->end = data + size;
skb->data += off; skb->data += off;
skb->tail += off; skb->tail += off;
skb->mac.raw += off; skb->transport_header += off;
skb->h.raw += off; skb->network_header += off;
skb->nh.raw += off; skb->mac_header += off;
skb->cloned = 0; skb->cloned = 0;
skb->nohdr = 0; skb->nohdr = 0;
atomic_set(&skb_shinfo(skb)->dataref, 1); atomic_set(&skb_shinfo(skb)->dataref, 1);
@ -1906,7 +1906,8 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
skb_reserve(nskb, headroom); skb_reserve(nskb, headroom);
skb_reset_mac_header(nskb); skb_reset_mac_header(nskb);
skb_set_network_header(nskb, skb->mac_len); skb_set_network_header(nskb, skb->mac_len);
nskb->h.raw = nskb->nh.raw + skb_network_header_len(skb); nskb->transport_header = (nskb->network_header +
skb_network_header_len(skb));
memcpy(skb_put(nskb, doffset), skb->data, doffset); memcpy(skb_put(nskb, doffset), skb->data, doffset);
if (!sg) { if (!sg) {

View file

@ -793,7 +793,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
skb2->protocol = __constant_htons(ETH_P_802_3); skb2->protocol = __constant_htons(ETH_P_802_3);
skb_reset_mac_header(skb2); skb_reset_mac_header(skb2);
skb_reset_network_header(skb2); skb_reset_network_header(skb2);
/* skb2->nh.raw += ETH_HLEN; */ /* skb2->network_header += ETH_HLEN; */
dev_queue_xmit(skb2); dev_queue_xmit(skb2);
} }
#endif #endif

View file

@ -181,9 +181,9 @@ static int ah_input(struct xfrm_state *x, struct sk_buff *skb)
} }
} }
((struct iphdr*)work_buf)->protocol = ah->nexthdr; ((struct iphdr*)work_buf)->protocol = ah->nexthdr;
skb->nh.raw += ah_hlen; skb->network_header += ah_hlen;
memcpy(skb_network_header(skb), work_buf, ihl); memcpy(skb_network_header(skb), work_buf, ihl);
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
__skb_pull(skb, ah_hlen + ihl); __skb_pull(skb, ah_hlen + ihl);
return 0; return 0;

View file

@ -333,7 +333,7 @@ static struct sk_buff *igmpv3_newpack(struct net_device *dev, int size)
((u8*)&pip[1])[2] = 0; ((u8*)&pip[1])[2] = 0;
((u8*)&pip[1])[3] = 0; ((u8*)&pip[1])[3] = 0;
skb->h.raw = skb->nh.raw + sizeof(struct iphdr) + 4; skb->transport_header = skb->network_header + sizeof(struct iphdr) + 4;
skb_put(skb, sizeof(*pig)); skb_put(skb, sizeof(*pig));
pig = igmpv3_report_hdr(skb); pig = igmpv3_report_hdr(skb);
pig->type = IGMPV3_HOST_MEMBERSHIP_REPORT; pig->type = IGMPV3_HOST_MEMBERSHIP_REPORT;

View file

@ -828,7 +828,7 @@ static int ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
old_iph = ip_hdr(skb); old_iph = ip_hdr(skb);
} }
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
skb_push(skb, gre_hlen); skb_push(skb, gre_hlen);
skb_reset_network_header(skb); skb_reset_network_header(skb);
memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));

View file

@ -582,7 +582,7 @@ slow_path:
skb_reserve(skb2, ll_rs); skb_reserve(skb2, ll_rs);
skb_put(skb2, len + hlen); skb_put(skb2, len + hlen);
skb_reset_network_header(skb2); skb_reset_network_header(skb2);
skb2->h.raw = skb2->nh.raw + hlen; skb2->transport_header = skb2->network_header + hlen;
/* /*
* Charge the memory for the fragment to any owner * Charge the memory for the fragment to any owner
@ -713,7 +713,7 @@ static inline int ip_ufo_append_data(struct sock *sk,
skb_reset_network_header(skb); skb_reset_network_header(skb);
/* initialize protocol header pointer */ /* initialize protocol header pointer */
skb->h.raw = skb->nh.raw + fragheaderlen; skb->transport_header = skb->network_header + fragheaderlen;
skb->ip_summed = CHECKSUM_PARTIAL; skb->ip_summed = CHECKSUM_PARTIAL;
skb->csum = 0; skb->csum = 0;
@ -918,7 +918,8 @@ alloc_new_skb:
*/ */
data = skb_put(skb, fraglen); data = skb_put(skb, fraglen);
skb_set_network_header(skb, exthdrlen); skb_set_network_header(skb, exthdrlen);
skb->h.raw = skb->nh.raw + fragheaderlen; skb->transport_header = (skb->network_header +
fragheaderlen);
data += fragheaderlen; data += fragheaderlen;
if (fraggap) { if (fraggap) {
@ -1112,8 +1113,8 @@ ssize_t ip_append_page(struct sock *sk, struct page *page,
*/ */
skb_put(skb, fragheaderlen + fraggap); skb_put(skb, fragheaderlen + fraggap);
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb->h.raw = skb->nh.raw + fragheaderlen; skb->transport_header = (skb->network_header +
fragheaderlen);
if (fraggap) { if (fraggap) {
skb->csum = skb_copy_and_csum_bits(skb_prev, skb->csum = skb_copy_and_csum_bits(skb_prev,
maxfraglen, maxfraglen,

View file

@ -87,7 +87,7 @@ static int ipcomp_input(struct xfrm_state *x, struct sk_buff *skb)
iph = ip_hdr(skb); iph = ip_hdr(skb);
ipch = (void *)skb->data; ipch = (void *)skb->data;
iph->protocol = ipch->nexthdr; iph->protocol = ipch->nexthdr;
skb->h.raw = skb->nh.raw + sizeof(*ipch); skb->transport_header = skb->network_header + sizeof(*ipch);
__skb_pull(skb, sizeof(*ipch)); __skb_pull(skb, sizeof(*ipch));
err = ipcomp_decompress(x, skb); err = ipcomp_decompress(x, skb);

View file

@ -485,7 +485,7 @@ static int ipip_rcv(struct sk_buff *skb)
secpath_reset(skb); secpath_reset(skb);
skb->mac.raw = skb->nh.raw; skb->mac_header = skb->network_header;
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb->protocol = htons(ETH_P_IP); skb->protocol = htons(ETH_P_IP);
skb->pkt_type = PACKET_HOST; skb->pkt_type = PACKET_HOST;
@ -617,7 +617,7 @@ static int ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
old_iph = ip_hdr(skb); old_iph = ip_hdr(skb);
} }
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
skb_push(skb, sizeof(struct iphdr)); skb_push(skb, sizeof(struct iphdr));
skb_reset_network_header(skb); skb_reset_network_header(skb);
memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));

View file

@ -597,7 +597,7 @@ static int ipmr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert)
msg->im_msgtype = assert; msg->im_msgtype = assert;
igmp->code = 0; igmp->code = 0;
ip_hdr(skb)->tot_len = htons(skb->len); /* Fix the length */ ip_hdr(skb)->tot_len = htons(skb->len); /* Fix the length */
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
} }
if (mroute_socket == NULL) { if (mroute_socket == NULL) {
@ -1102,7 +1102,7 @@ static void ip_encap(struct sk_buff *skb, __be32 saddr, __be32 daddr)
struct iphdr *old_iph = ip_hdr(skb); struct iphdr *old_iph = ip_hdr(skb);
skb_push(skb, sizeof(struct iphdr)); skb_push(skb, sizeof(struct iphdr));
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
skb_reset_network_header(skb); skb_reset_network_header(skb);
iph = ip_hdr(skb); iph = ip_hdr(skb);
@ -1461,7 +1461,7 @@ int pim_rcv_v1(struct sk_buff * skb)
if (reg_dev == NULL) if (reg_dev == NULL)
goto drop; goto drop;
skb->mac.raw = skb->nh.raw; skb->mac_header = skb->network_header;
skb_pull(skb, (u8*)encap - skb->data); skb_pull(skb, (u8*)encap - skb->data);
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb->dev = reg_dev; skb->dev = reg_dev;
@ -1517,7 +1517,7 @@ static int pim_rcv(struct sk_buff * skb)
if (reg_dev == NULL) if (reg_dev == NULL)
goto drop; goto drop;
skb->mac.raw = skb->nh.raw; skb->mac_header = skb->network_header;
skb_pull(skb, (u8*)encap - skb->data); skb_pull(skb, (u8*)encap - skb->data);
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb->dev = reg_dev; skb->dev = reg_dev;

View file

@ -323,7 +323,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
struct iphdr *old_iph = ip_hdr(skb); struct iphdr *old_iph = ip_hdr(skb);
u8 tos = old_iph->tos; u8 tos = old_iph->tos;
__be16 df = old_iph->frag_off; __be16 df = old_iph->frag_off;
unsigned char *old_h = skb_transport_header(skb); unsigned char *old_transport_header = skb->transport_header;
struct iphdr *iph; /* Our new IP header */ struct iphdr *iph; /* Our new IP header */
int max_headroom; /* The extra header space needed */ int max_headroom; /* The extra header space needed */
int mtu; int mtu;
@ -381,7 +381,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
old_iph = ip_hdr(skb); old_iph = ip_hdr(skb);
} }
skb->h.raw = old_h; skb->transport_header = old_transport_header;
/* fix old IP header checksum */ /* fix old IP header checksum */
ip_send_check(old_iph); ip_send_check(old_iph);

View file

@ -399,7 +399,7 @@ ipt_log_packet(unsigned int pf,
/* MAC logging for input chain only. */ /* MAC logging for input chain only. */
printk("MAC="); printk("MAC=");
if (skb->dev && skb->dev->hard_header_len if (skb->dev && skb->dev->hard_header_len
&& skb->mac.raw != skb->nh.raw) { && skb->mac_header != skb->network_header) {
int i; int i;
const unsigned char *p = skb_mac_header(skb); const unsigned char *p = skb_mac_header(skb);
for (i = 0; i < skb->dev->hard_header_len; i++,p++) for (i = 0; i < skb->dev->hard_header_len; i++,p++)

View file

@ -251,7 +251,7 @@ static void ipt_ulog_packet(unsigned int hooknum,
*(pm->prefix) = '\0'; *(pm->prefix) = '\0';
if (in && in->hard_header_len > 0 if (in && in->hard_header_len > 0
&& skb->mac.raw != skb->nh.raw && skb->mac_header != skb->network_header
&& in->hard_header_len <= ULOG_MAC_LEN) { && in->hard_header_len <= ULOG_MAC_LEN) {
memcpy(pm->mac, skb_mac_header(skb), in->hard_header_len); memcpy(pm->mac, skb_mac_header(skb), in->hard_header_len);
pm->mac_len = in->hard_header_len; pm->mac_len = in->hard_header_len;

View file

@ -297,7 +297,7 @@ static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,
skb->ip_summed = CHECKSUM_NONE; skb->ip_summed = CHECKSUM_NONE;
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
err = memcpy_fromiovecend((void *)iph, from, 0, length); err = memcpy_fromiovecend((void *)iph, from, 0, length);
if (err) if (err)
goto error_fault; goto error_fault;

View file

@ -33,7 +33,7 @@ static int xfrm4_beet_output(struct xfrm_state *x, struct sk_buff *skb)
int hdrlen, optlen; int hdrlen, optlen;
iph = ip_hdr(skb); iph = ip_hdr(skb);
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
hdrlen = 0; hdrlen = 0;
optlen = iph->ihl * 4 - sizeof(*iph); optlen = iph->ihl * 4 - sizeof(*iph);
@ -43,7 +43,7 @@ static int xfrm4_beet_output(struct xfrm_state *x, struct sk_buff *skb)
skb_push(skb, x->props.header_len + hdrlen); skb_push(skb, x->props.header_len + hdrlen);
skb_reset_network_header(skb); skb_reset_network_header(skb);
top_iph = ip_hdr(skb); top_iph = ip_hdr(skb);
skb->h.raw += sizeof(*iph) - hdrlen; skb->transport_header += sizeof(*iph) - hdrlen;
memmove(top_iph, iph, sizeof(*iph)); memmove(top_iph, iph, sizeof(*iph));
if (unlikely(optlen)) { if (unlikely(optlen)) {

View file

@ -26,9 +26,7 @@ static int xfrm4_transport_output(struct xfrm_state *x, struct sk_buff *skb)
struct iphdr *iph = ip_hdr(skb); struct iphdr *iph = ip_hdr(skb);
int ihl = iph->ihl * 4; int ihl = iph->ihl * 4;
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header + ihl;
skb->h.raw += ihl;
skb_push(skb, x->props.header_len); skb_push(skb, x->props.header_len);
skb_reset_network_header(skb); skb_reset_network_header(skb);
memmove(skb_network_header(skb), iph, ihl); memmove(skb_network_header(skb), iph, ihl);
@ -47,10 +45,10 @@ static int xfrm4_transport_input(struct xfrm_state *x, struct sk_buff *skb)
{ {
int ihl = skb->data - skb_transport_header(skb); int ihl = skb->data - skb_transport_header(skb);
if (skb->h.raw != skb->nh.raw) { if (skb->transport_header != skb->network_header) {
memmove(skb_transport_header(skb), memmove(skb_transport_header(skb),
skb_network_header(skb), ihl); skb_network_header(skb), ihl);
skb->nh.raw = skb->h.raw; skb->network_header = skb->transport_header;
} }
ip_hdr(skb)->tot_len = htons(skb->len + ihl); ip_hdr(skb)->tot_len = htons(skb->len + ihl);
skb_reset_transport_header(skb); skb_reset_transport_header(skb);

View file

@ -47,7 +47,7 @@ static int xfrm4_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
int flags; int flags;
iph = ip_hdr(skb); iph = ip_hdr(skb);
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
skb_push(skb, x->props.header_len); skb_push(skb, x->props.header_len);
skb_reset_network_header(skb); skb_reset_network_header(skb);

View file

@ -316,8 +316,8 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb)
* *
* To erase AH: * To erase AH:
* Keeping copy of cleared headers. After AH processing, * Keeping copy of cleared headers. After AH processing,
* Moving the pointer of skb->nh.raw by using skb_pull as long as AH * Moving the pointer of skb->network_header by using skb_pull as long
* header length. Then copy back the copy as long as hdr_len * as AH header length. Then copy back the copy as long as hdr_len
* If destination header following AH exists, copy it into after [Ext2]. * If destination header following AH exists, copy it into after [Ext2].
* *
* |<>|[IPv6][Ext1][Ext2][Dest][Payload] * |<>|[IPv6][Ext1][Ext2][Dest][Payload]
@ -384,9 +384,9 @@ static int ah6_input(struct xfrm_state *x, struct sk_buff *skb)
} }
} }
skb->nh.raw += ah_hlen; skb->network_header += ah_hlen;
memcpy(skb_network_header(skb), tmp_hdr, hdr_len); memcpy(skb_network_header(skb), tmp_hdr, hdr_len);
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
__skb_pull(skb, ah_hlen + hdr_len); __skb_pull(skb, ah_hlen + hdr_len);
kfree(tmp_hdr); kfree(tmp_hdr);

View file

@ -306,7 +306,7 @@ static int ipv6_destopt_rcv(struct sk_buff **skbp)
if (ip6_parse_tlv(tlvprocdestopt_lst, skbp)) { if (ip6_parse_tlv(tlvprocdestopt_lst, skbp)) {
dst_release(dst); dst_release(dst);
skb = *skbp; skb = *skbp;
skb->h.raw += (skb_transport_header(skb)[1] + 1) << 3; skb->transport_header += (skb_transport_header(skb)[1] + 1) << 3;
opt = IP6CB(skb); opt = IP6CB(skb);
#ifdef CONFIG_IPV6_MIP6 #ifdef CONFIG_IPV6_MIP6
opt->nhoff = dstbuf; opt->nhoff = dstbuf;
@ -444,7 +444,7 @@ looped_back:
} }
opt->lastopt = opt->srcrt = skb_network_header_len(skb); opt->lastopt = opt->srcrt = skb_network_header_len(skb);
skb->h.raw += (hdr->hdrlen + 1) << 3; skb->transport_header += (hdr->hdrlen + 1) << 3;
opt->dst0 = opt->dst1; opt->dst0 = opt->dst1;
opt->dst1 = 0; opt->dst1 = 0;
opt->nhoff = (&hdr->nexthdr) - skb_network_header(skb); opt->nhoff = (&hdr->nexthdr) - skb_network_header(skb);
@ -752,7 +752,7 @@ int ipv6_parse_hopopts(struct sk_buff **skbp)
opt->hop = sizeof(struct ipv6hdr); opt->hop = sizeof(struct ipv6hdr);
if (ip6_parse_tlv(tlvprochopopt_lst, skbp)) { if (ip6_parse_tlv(tlvprochopopt_lst, skbp)) {
skb = *skbp; skb = *skbp;
skb->h.raw += (skb_transport_header(skb)[1] + 1) << 3; skb->transport_header += (skb_transport_header(skb)[1] + 1) << 3;
opt = IP6CB(skb); opt = IP6CB(skb);
opt->nhoff = sizeof(struct ipv6hdr); opt->nhoff = sizeof(struct ipv6hdr);
return 1; return 1;

View file

@ -101,7 +101,7 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
if (hdr->version != 6) if (hdr->version != 6)
goto err; goto err;
skb->h.raw = skb->nh.raw + sizeof(*hdr); skb->transport_header = skb->network_header + sizeof(*hdr);
IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr); IP6CB(skb)->nhoff = offsetof(struct ipv6hdr, nexthdr);
pkt_len = ntohs(hdr->payload_len); pkt_len = ntohs(hdr->payload_len);

View file

@ -733,7 +733,8 @@ slow_path:
skb_put(frag, len + hlen + sizeof(struct frag_hdr)); skb_put(frag, len + hlen + sizeof(struct frag_hdr));
skb_reset_network_header(frag); skb_reset_network_header(frag);
fh = (struct frag_hdr *)(skb_network_header(frag) + hlen); fh = (struct frag_hdr *)(skb_network_header(frag) + hlen);
frag->h.raw = frag->nh.raw + hlen + sizeof(struct frag_hdr); frag->transport_header = (frag->network_header + hlen +
sizeof(struct frag_hdr));
/* /*
* Charge the memory for the fragment to any owner * Charge the memory for the fragment to any owner
@ -761,7 +762,7 @@ slow_path:
/* /*
* Copy a block of the IP datagram. * Copy a block of the IP datagram.
*/ */
if (skb_copy_bits(skb, ptr, frag->h.raw, len)) if (skb_copy_bits(skb, ptr, skb_transport_header(skb), len))
BUG(); BUG();
left -= len; left -= len;
@ -976,7 +977,7 @@ static inline int ip6_ufo_append_data(struct sock *sk,
skb_reset_network_header(skb); skb_reset_network_header(skb);
/* initialize protocol header pointer */ /* initialize protocol header pointer */
skb->h.raw = skb->nh.raw + fragheaderlen; skb->transport_header = skb->network_header + fragheaderlen;
skb->ip_summed = CHECKSUM_PARTIAL; skb->ip_summed = CHECKSUM_PARTIAL;
skb->csum = 0; skb->csum = 0;
@ -1198,8 +1199,8 @@ alloc_new_skb:
data = skb_put(skb, fraglen); data = skb_put(skb, fraglen);
skb_set_network_header(skb, exthdrlen); skb_set_network_header(skb, exthdrlen);
data += fragheaderlen; data += fragheaderlen;
skb->h.raw = skb->nh.raw + fragheaderlen; skb->transport_header = (skb->network_header +
fragheaderlen);
if (fraggap) { if (fraggap) {
skb->csum = skb_copy_and_csum_bits( skb->csum = skb_copy_and_csum_bits(
skb_prev, maxfraglen, skb_prev, maxfraglen,

View file

@ -701,7 +701,7 @@ static int ip6_tnl_rcv(struct sk_buff *skb, __u16 protocol,
goto discard; goto discard;
} }
secpath_reset(skb); secpath_reset(skb);
skb->mac.raw = skb->nh.raw; skb->mac_header = skb->network_header;
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb->protocol = htons(protocol); skb->protocol = htons(protocol);
skb->pkt_type = PACKET_HOST; skb->pkt_type = PACKET_HOST;
@ -898,7 +898,7 @@ static int ip6_tnl_xmit2(struct sk_buff *skb,
dst_release(skb->dst); dst_release(skb->dst);
skb->dst = dst_clone(dst); skb->dst = dst_clone(dst);
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
proto = fl->proto; proto = fl->proto;
if (encap_limit >= 0) { if (encap_limit >= 0) {

View file

@ -81,7 +81,7 @@ static int ipcomp6_input(struct xfrm_state *x, struct sk_buff *skb)
/* Remove ipcomp header and decompress original payload */ /* Remove ipcomp header and decompress original payload */
iph = ipv6_hdr(skb); iph = ipv6_hdr(skb);
ipch = (void *)skb->data; ipch = (void *)skb->data;
skb->h.raw = skb->nh.raw + sizeof(*ipch); skb->transport_header = skb->network_header + sizeof(*ipch);
__skb_pull(skb, sizeof(*ipch)); __skb_pull(skb, sizeof(*ipch));
/* decompression */ /* decompression */

View file

@ -396,7 +396,7 @@ ip6t_log_packet(unsigned int pf,
/* MAC logging for input chain only. */ /* MAC logging for input chain only. */
printk("MAC="); printk("MAC=");
if (skb->dev && (len = skb->dev->hard_header_len) && if (skb->dev && (len = skb->dev->hard_header_len) &&
skb->mac.raw != skb->nh.raw) { skb->mac_header != skb->network_header) {
const unsigned char *p = skb_mac_header(skb); const unsigned char *p = skb_mac_header(skb);
int i; int i;

View file

@ -630,8 +630,8 @@ nf_ct_frag6_reasm(struct nf_ct_frag6_queue *fq, struct net_device *dev)
skb_network_header(head)[fq->nhoffset] = skb_transport_header(head)[0]; skb_network_header(head)[fq->nhoffset] = skb_transport_header(head)[0];
memmove(head->head + sizeof(struct frag_hdr), head->head, memmove(head->head + sizeof(struct frag_hdr), head->head,
(head->data - head->head) - sizeof(struct frag_hdr)); (head->data - head->head) - sizeof(struct frag_hdr));
head->mac.raw += sizeof(struct frag_hdr); head->mac_header += sizeof(struct frag_hdr);
head->nh.raw += sizeof(struct frag_hdr); head->network_header += sizeof(struct frag_hdr);
skb_shinfo(head)->frag_list = head->next; skb_shinfo(head)->frag_list = head->next;
skb_reset_transport_header(head); skb_reset_transport_header(head);

View file

@ -583,7 +583,7 @@ static int rawv6_send_hdrinc(struct sock *sk, void *from, int length,
skb->ip_summed = CHECKSUM_NONE; skb->ip_summed = CHECKSUM_NONE;
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
err = memcpy_fromiovecend((void *)iph, from, 0, length); err = memcpy_fromiovecend((void *)iph, from, 0, length);
if (err) if (err)
goto error_fault; goto error_fault;

View file

@ -646,11 +646,11 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff **skb_in,
/* We have to remove fragment header from datagram and to relocate /* We have to remove fragment header from datagram and to relocate
* header in order to calculate ICV correctly. */ * header in order to calculate ICV correctly. */
nhoff = fq->nhoffset; nhoff = fq->nhoffset;
skb_network_header(head)[nhoff] = head->h.raw[0]; skb_network_header(head)[nhoff] = skb_transport_header(head)[0];
memmove(head->head + sizeof(struct frag_hdr), head->head, memmove(head->head + sizeof(struct frag_hdr), head->head,
(head->data - head->head) - sizeof(struct frag_hdr)); (head->data - head->head) - sizeof(struct frag_hdr));
head->mac.raw += sizeof(struct frag_hdr); head->mac_header += sizeof(struct frag_hdr);
head->nh.raw += sizeof(struct frag_hdr); head->network_header += sizeof(struct frag_hdr);
skb_shinfo(head)->frag_list = head->next; skb_shinfo(head)->frag_list = head->next;
skb_reset_transport_header(head); skb_reset_transport_header(head);
@ -732,7 +732,7 @@ static int ipv6_frag_rcv(struct sk_buff **skbp)
if (!(fhdr->frag_off & htons(0xFFF9))) { if (!(fhdr->frag_off & htons(0xFFF9))) {
/* It is not a fragmented frame */ /* It is not a fragmented frame */
skb->h.raw += sizeof(struct frag_hdr); skb->transport_header += sizeof(struct frag_hdr);
IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_REASMOKS); IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_REASMOKS);
IP6CB(skb)->nhoff = (u8 *)fhdr - skb_network_header(skb); IP6CB(skb)->nhoff = (u8 *)fhdr - skb_network_header(skb);

View file

@ -382,7 +382,7 @@ static int ipip6_rcv(struct sk_buff *skb)
read_lock(&ipip6_lock); read_lock(&ipip6_lock);
if ((tunnel = ipip6_tunnel_lookup(iph->saddr, iph->daddr)) != NULL) { if ((tunnel = ipip6_tunnel_lookup(iph->saddr, iph->daddr)) != NULL) {
secpath_reset(skb); secpath_reset(skb);
skb->mac.raw = skb->nh.raw; skb->mac_header = skb->network_header;
skb_reset_network_header(skb); skb_reset_network_header(skb);
IPCB(skb)->flags = 0; IPCB(skb)->flags = 0;
skb->protocol = htons(ETH_P_IPV6); skb->protocol = htons(ETH_P_IPV6);
@ -553,7 +553,7 @@ static int ipip6_tunnel_xmit(struct sk_buff *skb, struct net_device *dev)
iph6 = ipv6_hdr(skb); iph6 = ipv6_hdr(skb);
} }
skb->h.raw = skb->nh.raw; skb->transport_header = skb->network_header;
skb_push(skb, sizeof(struct iphdr)); skb_push(skb, sizeof(struct iphdr));
skb_reset_network_header(skb); skb_reset_network_header(skb);
memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));

View file

@ -48,8 +48,8 @@ static int xfrm6_beet_output(struct xfrm_state *x, struct sk_buff *skb)
skb_reset_network_header(skb); skb_reset_network_header(skb);
top_iph = ipv6_hdr(skb); top_iph = ipv6_hdr(skb);
skb->h.raw = skb->nh.raw + sizeof(struct ipv6hdr); skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);
skb->nh.raw += offsetof(struct ipv6hdr, nexthdr); skb->network_header += offsetof(struct ipv6hdr, nexthdr);
ipv6_addr_copy(&top_iph->saddr, (struct in6_addr *)&x->props.saddr); ipv6_addr_copy(&top_iph->saddr, (struct in6_addr *)&x->props.saddr);
ipv6_addr_copy(&top_iph->daddr, (struct in6_addr *)&x->id.daddr); ipv6_addr_copy(&top_iph->daddr, (struct in6_addr *)&x->id.daddr);

View file

@ -54,10 +54,10 @@ static int xfrm6_transport_input(struct xfrm_state *x, struct sk_buff *skb)
{ {
int ihl = skb->data - skb_transport_header(skb); int ihl = skb->data - skb_transport_header(skb);
if (skb->h.raw != skb->nh.raw) { if (skb->transport_header != skb->network_header) {
memmove(skb_transport_header(skb), memmove(skb_transport_header(skb),
skb_network_header(skb), ihl); skb_network_header(skb), ihl);
skb->nh.raw = skb->h.raw; skb->network_header = skb->transport_header;
} }
ipv6_hdr(skb)->payload_len = htons(skb->len + ihl - ipv6_hdr(skb)->payload_len = htons(skb->len + ihl -
sizeof(struct ipv6hdr)); sizeof(struct ipv6hdr));

View file

@ -55,8 +55,8 @@ static int xfrm6_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
skb_reset_network_header(skb); skb_reset_network_header(skb);
top_iph = ipv6_hdr(skb); top_iph = ipv6_hdr(skb);
skb->h.raw = skb->nh.raw + sizeof(struct ipv6hdr); skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);
skb->nh.raw += offsetof(struct ipv6hdr, nexthdr); skb->network_header += offsetof(struct ipv6hdr, nexthdr);
top_iph->version = 6; top_iph->version = 6;
if (xdst->route->ops->family == AF_INET6) { if (xdst->route->ops->family == AF_INET6) {

View file

@ -112,7 +112,7 @@ static inline int llc_fixup_skb(struct sk_buff *skb)
if (unlikely(!pskb_may_pull(skb, llc_len))) if (unlikely(!pskb_may_pull(skb, llc_len)))
return 0; return 0;
skb->h.raw += llc_len; skb->transport_header += llc_len;
skb_pull(skb, llc_len); skb_pull(skb, llc_len);
if (skb->protocol == htons(ETH_P_802_2)) { if (skb->protocol == htons(ETH_P_802_2)) {
__be16 pdulen = eth_hdr(skb)->h_proto; __be16 pdulen = eth_hdr(skb)->h_proto;

View file

@ -114,22 +114,22 @@ On receive:
----------- -----------
Incoming, dev->hard_header!=NULL Incoming, dev->hard_header!=NULL
mac.raw -> ll header mac_header -> ll header
data -> data data -> data
Outgoing, dev->hard_header!=NULL Outgoing, dev->hard_header!=NULL
mac.raw -> ll header mac_header -> ll header
data -> ll header data -> ll header
Incoming, dev->hard_header==NULL Incoming, dev->hard_header==NULL
mac.raw -> UNKNOWN position. It is very likely, that it points to ll header. mac_header -> UNKNOWN position. It is very likely, that it points to ll
PPP makes it, that is wrong, because introduce assymetry header. PPP makes it, that is wrong, because introduce
between rx and tx paths. assymetry between rx and tx paths.
data -> data data -> data
Outgoing, dev->hard_header==NULL Outgoing, dev->hard_header==NULL
mac.raw -> data. ll header is still not built! mac_header -> data. ll header is still not built!
data -> data data -> data
Resume Resume
If dev->hard_header==NULL we are unlikely to restore sensible ll header. If dev->hard_header==NULL we are unlikely to restore sensible ll header.
@ -139,12 +139,12 @@ On transmit:
------------ ------------
dev->hard_header != NULL dev->hard_header != NULL
mac.raw -> ll header mac_header -> ll header
data -> ll header data -> ll header
dev->hard_header == NULL (ll header is added by device, we cannot control it) dev->hard_header == NULL (ll header is added by device, we cannot control it)
mac.raw -> data mac_header -> data
data -> data data -> data
We should set nh.raw on output to correct posistion, We should set nh.raw on output to correct posistion,
packet classifier depends on it. packet classifier depends on it.

View file

@ -522,14 +522,14 @@ void sctp_v4_err(struct sk_buff *skb, __u32 info)
} }
/* Fix up skb to look at the embedded net header. */ /* Fix up skb to look at the embedded net header. */
saveip = skb->nh.raw; saveip = skb->network_header;
savesctp = skb->h.raw; savesctp = skb->transport_header;
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb_set_transport_header(skb, ihlen); skb_set_transport_header(skb, ihlen);
sk = sctp_err_lookup(AF_INET, skb, sctp_hdr(skb), &asoc, &transport); sk = sctp_err_lookup(AF_INET, skb, sctp_hdr(skb), &asoc, &transport);
/* Put back, the original pointers. */ /* Put back, the original pointers. */
skb->nh.raw = saveip; skb->network_header = saveip;
skb->h.raw = savesctp; skb->transport_header = savesctp;
if (!sk) { if (!sk) {
ICMP_INC_STATS_BH(ICMP_MIB_INERRORS); ICMP_INC_STATS_BH(ICMP_MIB_INERRORS);
return; return;

View file

@ -132,14 +132,14 @@ SCTP_STATIC void sctp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
idev = in6_dev_get(skb->dev); idev = in6_dev_get(skb->dev);
/* Fix up skb to look at the embedded net header. */ /* Fix up skb to look at the embedded net header. */
saveip = skb->nh.raw; saveip = skb->network_header;
savesctp = skb->h.raw; savesctp = skb->transport_header;
skb_reset_network_header(skb); skb_reset_network_header(skb);
skb_set_transport_header(skb, offset); skb_set_transport_header(skb, offset);
sk = sctp_err_lookup(AF_INET6, skb, sctp_hdr(skb), &asoc, &transport); sk = sctp_err_lookup(AF_INET6, skb, sctp_hdr(skb), &asoc, &transport);
/* Put back, the original pointers. */ /* Put back, the original pointers. */
skb->nh.raw = saveip; skb->network_header = saveip;
skb->h.raw = savesctp; skb->transport_header = savesctp;
if (!sk) { if (!sk) {
ICMP6_INC_STATS_BH(idev, ICMP6_MIB_INERRORS); ICMP6_INC_STATS_BH(idev, ICMP6_MIB_INERRORS);
goto out; goto out;