diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2009-06-02 01:19:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-03 05:51:04 -0400 |
commit | adf30907d63893e4208dfe3f5c88ae12bc2f25d5 (patch) | |
tree | 0f07542bb95de2ad537540868aba6cf87a86e17d /net/sched | |
parent | 511c3f92ad5b6d9f8f6464be1b4f85f0422be91a (diff) |
net: skb->dst accessors
Define three accessors to get/set dst attached to a skb
struct dst_entry *skb_dst(const struct sk_buff *skb)
void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst)
void skb_dst_drop(struct sk_buff *skb)
This one should replace occurrences of :
dst_release(skb->dst)
skb->dst = NULL;
Delete skb->dst field
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched')
-rw-r--r-- | net/sched/cls_flow.c | 8 | ||||
-rw-r--r-- | net/sched/cls_route.c | 2 | ||||
-rw-r--r-- | net/sched/em_meta.c | 4 | ||||
-rw-r--r-- | net/sched/sch_sfq.c | 2 | ||||
-rw-r--r-- | net/sched/sch_teql.c | 6 |
5 files changed, 11 insertions, 11 deletions
diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c index 0ef4e3065bcd..9402a7fd3785 100644 --- a/net/sched/cls_flow.c +++ b/net/sched/cls_flow.c | |||
@@ -84,7 +84,7 @@ static u32 flow_get_dst(const struct sk_buff *skb) | |||
84 | case htons(ETH_P_IPV6): | 84 | case htons(ETH_P_IPV6): |
85 | return ntohl(ipv6_hdr(skb)->daddr.s6_addr32[3]); | 85 | return ntohl(ipv6_hdr(skb)->daddr.s6_addr32[3]); |
86 | default: | 86 | default: |
87 | return addr_fold(skb->dst) ^ (__force u16)skb->protocol; | 87 | return addr_fold(skb_dst(skb)) ^ (__force u16)skb->protocol; |
88 | } | 88 | } |
89 | } | 89 | } |
90 | 90 | ||
@@ -163,7 +163,7 @@ static u32 flow_get_proto_dst(const struct sk_buff *skb) | |||
163 | break; | 163 | break; |
164 | } | 164 | } |
165 | default: | 165 | default: |
166 | res = addr_fold(skb->dst) ^ (__force u16)skb->protocol; | 166 | res = addr_fold(skb_dst(skb)) ^ (__force u16)skb->protocol; |
167 | } | 167 | } |
168 | 168 | ||
169 | return res; | 169 | return res; |
@@ -251,8 +251,8 @@ fallback: | |||
251 | static u32 flow_get_rtclassid(const struct sk_buff *skb) | 251 | static u32 flow_get_rtclassid(const struct sk_buff *skb) |
252 | { | 252 | { |
253 | #ifdef CONFIG_NET_CLS_ROUTE | 253 | #ifdef CONFIG_NET_CLS_ROUTE |
254 | if (skb->dst) | 254 | if (skb_dst(skb)) |
255 | return skb->dst->tclassid; | 255 | return skb_dst(skb)->tclassid; |
256 | #endif | 256 | #endif |
257 | return 0; | 257 | return 0; |
258 | } | 258 | } |
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c index bdf1f4172eef..dd872d5383ef 100644 --- a/net/sched/cls_route.c +++ b/net/sched/cls_route.c | |||
@@ -137,7 +137,7 @@ static int route4_classify(struct sk_buff *skb, struct tcf_proto *tp, | |||
137 | u32 id, h; | 137 | u32 id, h; |
138 | int iif, dont_cache = 0; | 138 | int iif, dont_cache = 0; |
139 | 139 | ||
140 | if ((dst = skb->dst) == NULL) | 140 | if ((dst = skb_dst(skb)) == NULL) |
141 | goto failure; | 141 | goto failure; |
142 | 142 | ||
143 | id = dst->tclassid; | 143 | id = dst->tclassid; |
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c index b6b588bed4e1..266151ae85a3 100644 --- a/net/sched/em_meta.c +++ b/net/sched/em_meta.c | |||
@@ -246,11 +246,11 @@ META_COLLECTOR(int_tcindex) | |||
246 | 246 | ||
247 | META_COLLECTOR(int_rtclassid) | 247 | META_COLLECTOR(int_rtclassid) |
248 | { | 248 | { |
249 | if (unlikely(skb->dst == NULL)) | 249 | if (unlikely(skb_dst(skb) == NULL)) |
250 | *err = -1; | 250 | *err = -1; |
251 | else | 251 | else |
252 | #ifdef CONFIG_NET_CLS_ROUTE | 252 | #ifdef CONFIG_NET_CLS_ROUTE |
253 | dst->value = skb->dst->tclassid; | 253 | dst->value = skb_dst(skb)->tclassid; |
254 | #else | 254 | #else |
255 | dst->value = 0; | 255 | dst->value = 0; |
256 | #endif | 256 | #endif |
diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c index 33133d27b539..8706920a6d45 100644 --- a/net/sched/sch_sfq.c +++ b/net/sched/sch_sfq.c | |||
@@ -149,7 +149,7 @@ static unsigned sfq_hash(struct sfq_sched_data *q, struct sk_buff *skb) | |||
149 | break; | 149 | break; |
150 | } | 150 | } |
151 | default: | 151 | default: |
152 | h = (unsigned long)skb->dst ^ skb->protocol; | 152 | h = (unsigned long)skb_dst(skb) ^ skb->protocol; |
153 | h2 = (unsigned long)skb->sk; | 153 | h2 = (unsigned long)skb->sk; |
154 | } | 154 | } |
155 | 155 | ||
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index a886496bdc3a..cb1cb1e76b9a 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c | |||
@@ -222,7 +222,7 @@ __teql_resolve(struct sk_buff *skb, struct sk_buff *skb_res, struct net_device * | |||
222 | { | 222 | { |
223 | struct netdev_queue *dev_queue = netdev_get_tx_queue(dev, 0); | 223 | struct netdev_queue *dev_queue = netdev_get_tx_queue(dev, 0); |
224 | struct teql_sched_data *q = qdisc_priv(dev_queue->qdisc); | 224 | struct teql_sched_data *q = qdisc_priv(dev_queue->qdisc); |
225 | struct neighbour *mn = skb->dst->neighbour; | 225 | struct neighbour *mn = skb_dst(skb)->neighbour; |
226 | struct neighbour *n = q->ncache; | 226 | struct neighbour *n = q->ncache; |
227 | 227 | ||
228 | if (mn->tbl == NULL) | 228 | if (mn->tbl == NULL) |
@@ -262,8 +262,8 @@ static inline int teql_resolve(struct sk_buff *skb, | |||
262 | return -ENODEV; | 262 | return -ENODEV; |
263 | 263 | ||
264 | if (dev->header_ops == NULL || | 264 | if (dev->header_ops == NULL || |
265 | skb->dst == NULL || | 265 | skb_dst(skb) == NULL || |
266 | skb->dst->neighbour == NULL) | 266 | skb_dst(skb)->neighbour == NULL) |
267 | return 0; | 267 | return 0; |
268 | return __teql_resolve(skb, skb_res, dev); | 268 | return __teql_resolve(skb, skb_res, dev); |
269 | } | 269 | } |