Commit 9917e1e8 authored by David S. Miller's avatar David S. Miller

ipv4: Turn rt->rt_route_iif into rt->rt_is_input.

That is this value's only use, as a boolean to indicate whether
a route is an input route or not.

So implement it that way, using a u16 gap present in the struct
already.
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4fd551d7
...@@ -47,8 +47,8 @@ struct rtable { ...@@ -47,8 +47,8 @@ struct rtable {
int rt_genid; int rt_genid;
unsigned int rt_flags; unsigned int rt_flags;
__u16 rt_type; __u16 rt_type;
__u16 rt_is_input;
int rt_route_iif;
int rt_iif; int rt_iif;
/* Info on neighbour */ /* Info on neighbour */
...@@ -61,12 +61,12 @@ struct rtable { ...@@ -61,12 +61,12 @@ struct rtable {
static inline bool rt_is_input_route(const struct rtable *rt) static inline bool rt_is_input_route(const struct rtable *rt)
{ {
return rt->rt_route_iif != 0; return rt->rt_is_input != 0;
} }
static inline bool rt_is_output_route(const struct rtable *rt) static inline bool rt_is_output_route(const struct rtable *rt)
{ {
return rt->rt_route_iif == 0; return rt->rt_is_input == 0;
} }
static inline __be32 rt_nexthop(const struct rtable *rt, __be32 daddr) static inline __be32 rt_nexthop(const struct rtable *rt, __be32 daddr)
......
...@@ -1330,7 +1330,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr, ...@@ -1330,7 +1330,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
rth->rt_genid = rt_genid(dev_net(dev)); rth->rt_genid = rt_genid(dev_net(dev));
rth->rt_flags = RTCF_MULTICAST; rth->rt_flags = RTCF_MULTICAST;
rth->rt_type = RTN_MULTICAST; rth->rt_type = RTN_MULTICAST;
rth->rt_route_iif = dev->ifindex; rth->rt_is_input= 1;
rth->rt_iif = dev->ifindex; rth->rt_iif = dev->ifindex;
rth->rt_pmtu = 0; rth->rt_pmtu = 0;
rth->rt_gateway = 0; rth->rt_gateway = 0;
...@@ -1460,7 +1460,7 @@ static int __mkroute_input(struct sk_buff *skb, ...@@ -1460,7 +1460,7 @@ static int __mkroute_input(struct sk_buff *skb,
rth->rt_genid = rt_genid(dev_net(rth->dst.dev)); rth->rt_genid = rt_genid(dev_net(rth->dst.dev));
rth->rt_flags = flags; rth->rt_flags = flags;
rth->rt_type = res->type; rth->rt_type = res->type;
rth->rt_route_iif = in_dev->dev->ifindex; rth->rt_is_input = 1;
rth->rt_iif = in_dev->dev->ifindex; rth->rt_iif = in_dev->dev->ifindex;
rth->rt_pmtu = 0; rth->rt_pmtu = 0;
rth->rt_gateway = 0; rth->rt_gateway = 0;
...@@ -1638,7 +1638,7 @@ out: return err; ...@@ -1638,7 +1638,7 @@ out: return err;
rth->rt_genid = rt_genid(net); rth->rt_genid = rt_genid(net);
rth->rt_flags = flags|RTCF_LOCAL; rth->rt_flags = flags|RTCF_LOCAL;
rth->rt_type = res.type; rth->rt_type = res.type;
rth->rt_route_iif = dev->ifindex; rth->rt_is_input = 1;
rth->rt_iif = dev->ifindex; rth->rt_iif = dev->ifindex;
rth->rt_pmtu = 0; rth->rt_pmtu = 0;
rth->rt_gateway = 0; rth->rt_gateway = 0;
...@@ -1803,7 +1803,7 @@ static struct rtable *__mkroute_output(const struct fib_result *res, ...@@ -1803,7 +1803,7 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
rth->rt_genid = rt_genid(dev_net(dev_out)); rth->rt_genid = rt_genid(dev_net(dev_out));
rth->rt_flags = flags; rth->rt_flags = flags;
rth->rt_type = type; rth->rt_type = type;
rth->rt_route_iif = 0; rth->rt_is_input = 0;
rth->rt_iif = orig_oif ? : dev_out->ifindex; rth->rt_iif = orig_oif ? : dev_out->ifindex;
rth->rt_pmtu = 0; rth->rt_pmtu = 0;
rth->rt_gateway = 0; rth->rt_gateway = 0;
...@@ -2079,7 +2079,7 @@ struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_or ...@@ -2079,7 +2079,7 @@ struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_or
if (new->dev) if (new->dev)
dev_hold(new->dev); dev_hold(new->dev);
rt->rt_route_iif = ort->rt_route_iif; rt->rt_is_input = ort->rt_is_input;
rt->rt_iif = ort->rt_iif; rt->rt_iif = ort->rt_iif;
rt->rt_pmtu = ort->rt_pmtu; rt->rt_pmtu = ort->rt_pmtu;
......
...@@ -79,7 +79,6 @@ static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev, ...@@ -79,7 +79,6 @@ static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
struct rtable *rt = (struct rtable *)xdst->route; struct rtable *rt = (struct rtable *)xdst->route;
const struct flowi4 *fl4 = &fl->u.ip4; const struct flowi4 *fl4 = &fl->u.ip4;
xdst->u.rt.rt_route_iif = fl4->flowi4_iif;
xdst->u.rt.rt_iif = fl4->flowi4_iif; xdst->u.rt.rt_iif = fl4->flowi4_iif;
xdst->u.dst.dev = dev; xdst->u.dst.dev = dev;
...@@ -87,6 +86,7 @@ static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev, ...@@ -87,6 +86,7 @@ static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
/* Sheit... I remember I did this right. Apparently, /* Sheit... I remember I did this right. Apparently,
* it was magically lost, so this code needs audit */ * it was magically lost, so this code needs audit */
xdst->u.rt.rt_is_input = rt->rt_is_input;
xdst->u.rt.rt_flags = rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST | xdst->u.rt.rt_flags = rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST |
RTCF_LOCAL); RTCF_LOCAL);
xdst->u.rt.rt_type = rt->rt_type; xdst->u.rt.rt_type = rt->rt_type;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment