projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net: remove ipv6_addr_copy()
[cascardo/linux.git]
/
net
/
ipv6
/
ip6_output.c
diff --git
a/net/ipv6/ip6_output.c
b/net/ipv6/ip6_output.c
index
84d0bd5
..
a24e155
100644
(file)
--- a/
net/ipv6/ip6_output.c
+++ b/
net/ipv6/ip6_output.c
@@
-238,8
+238,8
@@
int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6,
hdr->nexthdr = proto;
hdr->hop_limit = hlimit;
hdr->nexthdr = proto;
hdr->hop_limit = hlimit;
-
ipv6_addr_copy(&hdr->saddr, &fl6->saddr)
;
-
ipv6_addr_copy(&hdr->daddr, first_hop)
;
+
hdr->saddr = fl6->saddr
;
+
hdr->daddr = *first_hop
;
skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;
skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;
@@
-290,8
+290,8
@@
int ip6_nd_hdr(struct sock *sk, struct sk_buff *skb, struct net_device *dev,
hdr->nexthdr = proto;
hdr->hop_limit = np->hop_limit;
hdr->nexthdr = proto;
hdr->hop_limit = np->hop_limit;
-
ipv6_addr_copy(&hdr->saddr, saddr)
;
-
ipv6_addr_copy(&hdr->daddr, daddr)
;
+
hdr->saddr = *saddr
;
+
hdr->daddr = *daddr
;
return 0;
}
return 0;
}
@@
-631,6
+631,7
@@
int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))
struct ipv6hdr *tmp_hdr;
struct frag_hdr *fh;
unsigned int mtu, hlen, left, len;
struct ipv6hdr *tmp_hdr;
struct frag_hdr *fh;
unsigned int mtu, hlen, left, len;
+ int hroom, troom;
__be32 frag_id = 0;
int ptr, offset = 0, err=0;
u8 *prevhdr, nexthdr = 0;
__be32 frag_id = 0;
int ptr, offset = 0, err=0;
u8 *prevhdr, nexthdr = 0;
@@
-797,6
+798,8
@@
slow_path:
*/
*prevhdr = NEXTHDR_FRAGMENT;
*/
*prevhdr = NEXTHDR_FRAGMENT;
+ hroom = LL_RESERVED_SPACE(rt->dst.dev);
+ troom = rt->dst.dev->needed_tailroom;
/*
* Keep copying data until we run out.
/*
* Keep copying data until we run out.
@@
-815,7
+818,8
@@
slow_path:
* Allocate buffer.
*/
* Allocate buffer.
*/
- if ((frag = alloc_skb(len+hlen+sizeof(struct frag_hdr)+LL_ALLOCATED_SPACE(rt->dst.dev), GFP_ATOMIC)) == NULL) {
+ if ((frag = alloc_skb(len + hlen + sizeof(struct frag_hdr) +
+ hroom + troom, GFP_ATOMIC)) == NULL) {
NETDEBUG(KERN_INFO "IPv6: frag: no memory for new fragment!\n");
IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
IPSTATS_MIB_FRAGFAILS);
NETDEBUG(KERN_INFO "IPv6: frag: no memory for new fragment!\n");
IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
IPSTATS_MIB_FRAGFAILS);
@@
-828,7
+832,7
@@
slow_path:
*/
ip6_copy_metadata(frag, skb);
*/
ip6_copy_metadata(frag, skb);
- skb_reserve(frag,
LL_RESERVED_SPACE(rt->dst.dev)
);
+ skb_reserve(frag,
hroom
);
skb_put(frag, len + hlen + sizeof(struct frag_hdr));
skb_reset_network_header(frag);
fh = (struct frag_hdr *)(skb_network_header(frag) + hlen);
skb_put(frag, len + hlen + sizeof(struct frag_hdr));
skb_reset_network_header(frag);
fh = (struct frag_hdr *)(skb_network_header(frag) + hlen);
@@
-1059,7
+1063,7
@@
struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
if (err)
return ERR_PTR(err);
if (final_dst)
if (err)
return ERR_PTR(err);
if (final_dst)
-
ipv6_addr_copy(&fl6->daddr, final_dst)
;
+
fl6->daddr = *final_dst
;
if (can_sleep)
fl6->flowi6_flags |= FLOWI_FLAG_CAN_SLEEP;
if (can_sleep)
fl6->flowi6_flags |= FLOWI_FLAG_CAN_SLEEP;
@@
-1095,7
+1099,7
@@
struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
if (err)
return ERR_PTR(err);
if (final_dst)
if (err)
return ERR_PTR(err);
if (final_dst)
-
ipv6_addr_copy(&fl6->daddr, final_dst)
;
+
fl6->daddr = *final_dst
;
if (can_sleep)
fl6->flowi6_flags |= FLOWI_FLAG_CAN_SLEEP;
if (can_sleep)
fl6->flowi6_flags |= FLOWI_FLAG_CAN_SLEEP;
@@
-1588,7
+1592,7
@@
int ip6_push_pending_frames(struct sock *sk)
if (np->pmtudisc < IPV6_PMTUDISC_DO)
skb->local_df = 1;
if (np->pmtudisc < IPV6_PMTUDISC_DO)
skb->local_df = 1;
-
ipv6_addr_copy(final_dst, &fl6->daddr)
;
+
*final_dst = fl6->daddr
;
__skb_pull(skb, skb_network_header_len(skb));
if (opt && opt->opt_flen)
ipv6_push_frag_opts(skb, opt, &proto);
__skb_pull(skb, skb_network_header_len(skb));
if (opt && opt->opt_flen)
ipv6_push_frag_opts(skb, opt, &proto);
@@
-1604,8
+1608,8
@@
int ip6_push_pending_frames(struct sock *sk)
hdr->hop_limit = np->cork.hop_limit;
hdr->nexthdr = proto;
hdr->hop_limit = np->cork.hop_limit;
hdr->nexthdr = proto;
-
ipv6_addr_copy(&hdr->saddr, &fl6->saddr)
;
-
ipv6_addr_copy(&hdr->daddr, final_dst)
;
+
hdr->saddr = fl6->saddr
;
+
hdr->daddr = *final_dst
;
skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;
skb->priority = sk->sk_priority;
skb->mark = sk->sk_mark;