diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2008-03-05 21:30:47 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-05 21:30:47 -0500 |
commit | ee6b967301b4aa5d4a4b61e2f682f086266db9fb (patch) | |
tree | 197c2430f87733dc80d00d1971f1be2a0e562358 /net/ipv4/ip_output.c | |
parent | a05c44f6d5fb6cd29da04f96bf5ffaa05f545ac5 (diff) |
[IPV4]: Add 'rtable' field in struct sk_buff to alias 'dst' and avoid casts
(Anonymous) unions can help us to avoid ugly casts.
A common cast it the (struct rtable *)skb->dst one.
Defining an union like :
union {
struct dst_entry *dst;
struct rtable *rtable;
};
permits to use skb->rtable in place.
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ip_output.c')
-rw-r--r-- | net/ipv4/ip_output.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 341779e685d9..dc494ea594a7 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -142,7 +142,7 @@ int ip_build_and_send_pkt(struct sk_buff *skb, struct sock *sk, | |||
142 | __be32 saddr, __be32 daddr, struct ip_options *opt) | 142 | __be32 saddr, __be32 daddr, struct ip_options *opt) |
143 | { | 143 | { |
144 | struct inet_sock *inet = inet_sk(sk); | 144 | struct inet_sock *inet = inet_sk(sk); |
145 | struct rtable *rt = (struct rtable *)skb->dst; | 145 | struct rtable *rt = skb->rtable; |
146 | struct iphdr *iph; | 146 | struct iphdr *iph; |
147 | 147 | ||
148 | /* Build the IP header. */ | 148 | /* Build the IP header. */ |
@@ -240,7 +240,7 @@ static int ip_finish_output(struct sk_buff *skb) | |||
240 | int ip_mc_output(struct sk_buff *skb) | 240 | int ip_mc_output(struct sk_buff *skb) |
241 | { | 241 | { |
242 | struct sock *sk = skb->sk; | 242 | struct sock *sk = skb->sk; |
243 | struct rtable *rt = (struct rtable*)skb->dst; | 243 | struct rtable *rt = skb->rtable; |
244 | struct net_device *dev = rt->u.dst.dev; | 244 | struct net_device *dev = rt->u.dst.dev; |
245 | 245 | ||
246 | /* | 246 | /* |
@@ -321,7 +321,7 @@ int ip_queue_xmit(struct sk_buff *skb, int ipfragok) | |||
321 | /* Skip all of this if the packet is already routed, | 321 | /* Skip all of this if the packet is already routed, |
322 | * f.e. by something like SCTP. | 322 | * f.e. by something like SCTP. |
323 | */ | 323 | */ |
324 | rt = (struct rtable *) skb->dst; | 324 | rt = skb->rtable; |
325 | if (rt != NULL) | 325 | if (rt != NULL) |
326 | goto packet_routed; | 326 | goto packet_routed; |
327 | 327 | ||
@@ -441,7 +441,7 @@ int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*)) | |||
441 | unsigned int mtu, hlen, left, len, ll_rs, pad; | 441 | unsigned int mtu, hlen, left, len, ll_rs, pad; |
442 | int offset; | 442 | int offset; |
443 | __be16 not_last_frag; | 443 | __be16 not_last_frag; |
444 | struct rtable *rt = (struct rtable*)skb->dst; | 444 | struct rtable *rt = skb->rtable; |
445 | int err = 0; | 445 | int err = 0; |
446 | 446 | ||
447 | dev = rt->u.dst.dev; | 447 | dev = rt->u.dst.dev; |
@@ -1357,7 +1357,7 @@ void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *ar | |||
1357 | } replyopts; | 1357 | } replyopts; |
1358 | struct ipcm_cookie ipc; | 1358 | struct ipcm_cookie ipc; |
1359 | __be32 daddr; | 1359 | __be32 daddr; |
1360 | struct rtable *rt = (struct rtable*)skb->dst; | 1360 | struct rtable *rt = skb->rtable; |
1361 | 1361 | ||
1362 | if (ip_options_echo(&replyopts.opt, skb)) | 1362 | if (ip_options_echo(&replyopts.opt, skb)) |
1363 | return; | 1363 | return; |