Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c14d2450 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo Committed by David S. Miller
Browse files

[SK_BUFF]: Introduce skb_set_network_header



For the cases where the network header is being set to a offset from skb->data.

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 878c8145
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -970,6 +970,11 @@ static inline void skb_reset_network_header(struct sk_buff *skb)
	skb->nh.raw = skb->data;
}

static inline void skb_set_network_header(struct sk_buff *skb, const int offset)
{
	skb->nh.raw = skb->data + offset;
}

static inline int skb_network_offset(const struct sk_buff *skb)
{
	return skb->nh.raw - skb->data;
+4 −2
Original line number Diff line number Diff line
@@ -148,7 +148,8 @@ void ax25_output(ax25_cb *ax25, int paclen, struct sk_buff *skb)

			if (ka9qfrag == 1) {
				skb_reserve(skbn, frontlen + 2);
				skbn->nh.raw = skbn->data + skb_network_offset(skb);
				skb_set_network_header(skbn,
						      skb_network_offset(skb));
				memcpy(skb_put(skbn, len), skb->data, len);
				p = skb_push(skbn, 2);

@@ -161,7 +162,8 @@ void ax25_output(ax25_cb *ax25, int paclen, struct sk_buff *skb)
				}
			} else {
				skb_reserve(skbn, frontlen + 1);
				skbn->nh.raw = skbn->data + skb_network_offset(skb);
				skb_set_network_header(skbn,
						      skb_network_offset(skb));
				memcpy(skb_put(skbn, len), skb->data, len);
				p = skb_push(skbn, 1);
				*p = AX25_P_TEXT;
+2 −2
Original line number Diff line number Diff line
@@ -928,9 +928,9 @@ int ip_append_data(struct sock *sk,
			 *	Find where to start putting bytes.
			 */
			data = skb_put(skb, fraglen);
			skb->nh.raw = data + exthdrlen;
			skb_set_network_header(skb, exthdrlen);
			skb->h.raw = skb->nh.raw + fragheaderlen;
			data += fragheaderlen;
			skb->h.raw = data + exthdrlen;

			if (fraggap) {
				skb->csum = skb_copy_and_csum_bits(
+2 −1
Original line number Diff line number Diff line
@@ -3634,7 +3634,8 @@ tcp_collapse(struct sock *sk, struct sk_buff_head *list,
			return;

		skb_set_mac_header(nskb, skb_mac_header(skb) - skb->head);
		nskb->nh.raw = nskb->data + (skb_network_header(skb) - skb->head);
		skb_set_network_header(nskb,
				       skb_network_header(skb) - skb->head);
		nskb->h.raw = nskb->data + (skb->h.raw - skb->head);

		skb_reserve(nskb, header);
+2 −2
Original line number Diff line number Diff line
@@ -1206,9 +1206,9 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
			 *	Find where to start putting bytes
			 */
			data = skb_put(skb, fraglen);
			skb->nh.raw = data + exthdrlen;
			skb_set_network_header(skb, exthdrlen);
			data += fragheaderlen;
			skb->h.raw = data + exthdrlen;
			skb->h.raw = skb->nh.raw + fragheaderlen;

			if (fraggap) {
				skb->csum = skb_copy_and_csum_bits(