git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git]
/
net
/
ipv4
/
ip_output.c
diff --git
a/net/ipv4/ip_output.c
b/net/ipv4/ip_output.c
index
60fc509
..
5a853aa
100644
(file)
--- a/
net/ipv4/ip_output.c
+++ b/
net/ipv4/ip_output.c
@@
-233,7
+233,7
@@
int ip_mc_output(struct sk_buff **pskb)
/*
* If the indicated interface is up and running, send the packet.
*/
/*
* If the indicated interface is up and running, send the packet.
*/
- IP_INC_STATS(
OutRequests
);
+ IP_INC_STATS(
IPSTATS_MIB_OUTREQUESTS
);
skb->dev = dev;
skb->protocol = htons(ETH_P_IP);
skb->dev = dev;
skb->protocol = htons(ETH_P_IP);
@@
-288,7
+288,7
@@
int ip_output(struct sk_buff **pskb)
{
struct sk_buff *skb = *pskb;
{
struct sk_buff *skb = *pskb;
- IP_INC_STATS(
OutRequests
);
+ IP_INC_STATS(
IPSTATS_MIB_OUTREQUESTS
);
if ((skb->len > dst_pmtu(skb->dst) || skb_shinfo(skb)->frag_list) &&
!skb_shinfo(skb)->tso_size)
if ((skb->len > dst_pmtu(skb->dst) || skb_shinfo(skb)->frag_list) &&
!skb_shinfo(skb)->tso_size)
@@
-393,7
+393,7
@@
packet_routed:
dst_output);
no_route:
dst_output);
no_route:
- IP_INC_STATS(
OutNoRoutes
);
+ IP_INC_STATS(
IPSTATS_MIB_OUTNOROUTES
);
kfree_skb(skb);
return -EHOSTUNREACH;
}
kfree_skb(skb);
return -EHOSTUNREACH;
}
@@
-498,10
+498,6
@@
int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
skb_headroom(frag) < hlen)
goto slow_path;
skb_headroom(frag) < hlen)
goto slow_path;
- /* Correct socket ownership. */
- if (frag->sk == NULL && skb->sk)
- goto slow_path;
-
/* Partially cloned skb? */
if (skb_shared(frag))
goto slow_path;
/* Partially cloned skb? */
if (skb_shared(frag))
goto slow_path;
@@
-512,7
+508,7
@@
int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
err = 0;
offset = 0;
frag = skb_shinfo(skb)->frag_list;
err = 0;
offset = 0;
frag = skb_shinfo(skb)->frag_list;
- skb_shinfo(skb)->frag_list =
0
;
+ skb_shinfo(skb)->frag_list =
NULL
;
skb->data_len = first_len - skb_headlen(skb);
skb->len = first_len;
iph->tot_len = htons(first_len);
skb->data_len = first_len - skb_headlen(skb);
skb->len = first_len;
iph->tot_len = htons(first_len);
@@
-550,7
+546,7
@@
int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
}
if (err == 0) {
}
if (err == 0) {
- IP_INC_STATS(
FragOKs
);
+ IP_INC_STATS(
IPSTATS_MIB_FRAGOKS
);
return 0;
}
return 0;
}
@@
-559,7
+555,7
@@
int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*))
kfree_skb(frag);
frag = skb;
}
kfree_skb(frag);
frag = skb;
}
- IP_INC_STATS(
FragFails
);
+ IP_INC_STATS(
IPSTATS_MIB_FRAGFAILS
);
return err;
}
return err;
}
@@
-665,7
+661,7
@@
slow_path:
* Put this fragment into the sending queue.
*/
* Put this fragment into the sending queue.
*/
- IP_INC_STATS(
FragCreates
);
+ IP_INC_STATS(
IPSTATS_MIB_FRAGCREATES
);
iph->tot_len = htons(len + hlen);
iph->tot_len = htons(len + hlen);
@@
-676,12
+672,12
@@
slow_path:
goto fail;
}
kfree_skb(skb);
goto fail;
}
kfree_skb(skb);
- IP_INC_STATS(
FragOKs
);
+ IP_INC_STATS(
IPSTATS_MIB_FRAGOKS
);
return err;
fail:
kfree_skb(skb);
return err;
fail:
kfree_skb(skb);
- IP_INC_STATS(
FragFails
);
+ IP_INC_STATS(
IPSTATS_MIB_FRAGFAILS
);
return err;
}
return err;
}
@@
-702,17
+698,6
@@
ip_generic_getfrag(void *from, char *to, int offset, int len, int odd, struct sk
return 0;
}
return 0;
}
-static inline int
-skb_can_coalesce(struct sk_buff *skb, int i, struct page *page, int off)
-{
- if (i) {
- skb_frag_t *frag = &skb_shinfo(skb)->frags[i-1];
- return page == frag->page &&
- off == frag->page_offset+frag->size;
- }
- return 0;
-}
-
static inline unsigned int
csum_page(struct page *page, int offset, int copy)
{
static inline unsigned int
csum_page(struct page *page, int offset, int copy)
{
@@
-777,8
+762,8
@@
int ip_append_data(struct sock *sk,
inet->cork.fragsize = mtu = dst_pmtu(&rt->u.dst);
inet->cork.rt = rt;
inet->cork.length = 0;
inet->cork.fragsize = mtu = dst_pmtu(&rt->u.dst);
inet->cork.rt = rt;
inet->cork.length = 0;
-
inet->
sndmsg_page = NULL;
-
inet->
sndmsg_off = 0;
+
sk->sk_
sndmsg_page = NULL;
+
sk->sk_
sndmsg_off = 0;
if ((exthdrlen = rt->u.dst.header_len) != 0) {
length += exthdrlen;
transhdrlen += exthdrlen;
if ((exthdrlen = rt->u.dst.header_len) != 0) {
length += exthdrlen;
transhdrlen += exthdrlen;
@@
-926,8
+911,8
@@
alloc_new_skb:
} else {
int i = skb_shinfo(skb)->nr_frags;
skb_frag_t *frag = &skb_shinfo(skb)->frags[i-1];
} else {
int i = skb_shinfo(skb)->nr_frags;
skb_frag_t *frag = &skb_shinfo(skb)->frags[i-1];
- struct page *page =
inet->
sndmsg_page;
- int off =
inet->
sndmsg_off;
+ struct page *page =
sk->sk_
sndmsg_page;
+ int off =
sk->sk_
sndmsg_off;
unsigned int left;
if (page && (left = PAGE_SIZE - off) > 0) {
unsigned int left;
if (page && (left = PAGE_SIZE - off) > 0) {
@@
-939,7
+924,7
@@
alloc_new_skb:
goto error;
}
get_page(page);
goto error;
}
get_page(page);
- skb_fill_page_desc(skb, i, page,
inet->
sndmsg_off, 0);
+ skb_fill_page_desc(skb, i, page,
sk->sk_
sndmsg_off, 0);
frag = &skb_shinfo(skb)->frags[i];
}
} else if (i < MAX_SKB_FRAGS) {
frag = &skb_shinfo(skb)->frags[i];
}
} else if (i < MAX_SKB_FRAGS) {
@@
-950,8
+935,8
@@
alloc_new_skb:
err = -ENOMEM;
goto error;
}
err = -ENOMEM;
goto error;
}
-
inet->
sndmsg_page = page;
-
inet->
sndmsg_off = 0;
+
sk->sk_
sndmsg_page = page;
+
sk->sk_
sndmsg_off = 0;
skb_fill_page_desc(skb, i, page, 0, 0);
frag = &skb_shinfo(skb)->frags[i];
skb_fill_page_desc(skb, i, page, 0, 0);
frag = &skb_shinfo(skb)->frags[i];
@@
-965,7
+950,7
@@
alloc_new_skb:
err = -EFAULT;
goto error;
}
err = -EFAULT;
goto error;
}
-
inet->
sndmsg_off += copy;
+
sk->sk_
sndmsg_off += copy;
frag->size += copy;
skb->len += copy;
skb->data_len += copy;
frag->size += copy;
skb->len += copy;
skb->data_len += copy;
@@
-978,7
+963,7
@@
alloc_new_skb:
error:
inet->cork.length -= length;
error:
inet->cork.length -= length;
- IP_INC_STATS(
OutDiscards
);
+ IP_INC_STATS(
IPSTATS_MIB_OUTDISCARDS
);
return err;
}
return err;
}
@@
-1091,7
+1076,7
@@
ssize_t ip_append_page(struct sock *sk, struct page *page,
error:
inet->cork.length -= size;
error:
inet->cork.length -= size;
- IP_INC_STATS(
OutDiscards
);
+ IP_INC_STATS(
IPSTATS_MIB_OUTDISCARDS
);
return err;
}
return err;
}
@@
-1124,12
+1109,10
@@
int ip_push_pending_frames(struct sock *sk)
tail_skb = &(tmp_skb->next);
skb->len += tmp_skb->len;
skb->data_len += tmp_skb->len;
tail_skb = &(tmp_skb->next);
skb->len += tmp_skb->len;
skb->data_len += tmp_skb->len;
-#if 0 /* Logically correct, but useless work, ip_fragment() will have to undo */
skb->truesize += tmp_skb->truesize;
__sock_put(tmp_skb->sk);
tmp_skb->destructor = NULL;
tmp_skb->sk = NULL;
skb->truesize += tmp_skb->truesize;
__sock_put(tmp_skb->sk);
tmp_skb->destructor = NULL;
tmp_skb->sk = NULL;
-#endif
}
/* Unless user demanded real pmtu discovery (IP_PMTUDISC_DO), we allow
}
/* Unless user demanded real pmtu discovery (IP_PMTUDISC_DO), we allow
@@
-1201,7
+1184,7
@@
out:
return err;
error:
return err;
error:
- IP_INC_STATS(
OutDiscards
);
+ IP_INC_STATS(
IPSTATS_MIB_OUTDISCARDS
);
goto out;
}
goto out;
}