Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
41347dcd
Commit
41347dcd
authored
Jun 28, 2012
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ipv4: Kill rt->rt_spec_dst, no longer used.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
35ebf65e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
12 additions
and
39 deletions
+12
-39
include/net/ip_fib.h
include/net/ip_fib.h
+1
-1
include/net/route.h
include/net/route.h
+0
-1
net/ipv4/fib_frontend.c
net/ipv4/fib_frontend.c
+2
-7
net/ipv4/route.c
net/ipv4/route.c
+9
-29
net/ipv4/xfrm4_policy.c
net/ipv4/xfrm4_policy.c
+0
-1
No files found.
include/net/ip_fib.h
View file @
41347dcd
...
@@ -233,7 +233,7 @@ extern void ip_fib_init(void);
...
@@ -233,7 +233,7 @@ extern void ip_fib_init(void);
extern
__be32
fib_compute_spec_dst
(
struct
sk_buff
*
skb
);
extern
__be32
fib_compute_spec_dst
(
struct
sk_buff
*
skb
);
extern
int
fib_validate_source
(
struct
sk_buff
*
skb
,
__be32
src
,
__be32
dst
,
extern
int
fib_validate_source
(
struct
sk_buff
*
skb
,
__be32
src
,
__be32
dst
,
u8
tos
,
int
oif
,
struct
net_device
*
dev
,
u8
tos
,
int
oif
,
struct
net_device
*
dev
,
__be32
*
spec_dst
,
u32
*
itag
);
u32
*
itag
);
extern
void
fib_select_default
(
struct
fib_result
*
res
);
extern
void
fib_select_default
(
struct
fib_result
*
res
);
/* Exported by fib_semantics.c */
/* Exported by fib_semantics.c */
...
...
include/net/route.h
View file @
41347dcd
...
@@ -65,7 +65,6 @@ struct rtable {
...
@@ -65,7 +65,6 @@ struct rtable {
__be32
rt_gateway
;
__be32
rt_gateway
;
/* Miscellaneous cached information */
/* Miscellaneous cached information */
__be32
rt_spec_dst
;
/* RFC1122 specific destination */
u32
rt_peer_genid
;
u32
rt_peer_genid
;
unsigned
long
_peer
;
/* long-living peer info */
unsigned
long
_peer
;
/* long-living peer info */
struct
fib_info
*
fi
;
/* for client ref to shared metrics */
struct
fib_info
*
fi
;
/* for client ref to shared metrics */
...
...
net/ipv4/fib_frontend.c
View file @
41347dcd
...
@@ -218,8 +218,7 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb)
...
@@ -218,8 +218,7 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb)
* called with rcu_read_lock()
* called with rcu_read_lock()
*/
*/
int
fib_validate_source
(
struct
sk_buff
*
skb
,
__be32
src
,
__be32
dst
,
u8
tos
,
int
fib_validate_source
(
struct
sk_buff
*
skb
,
__be32
src
,
__be32
dst
,
u8
tos
,
int
oif
,
struct
net_device
*
dev
,
__be32
*
spec_dst
,
int
oif
,
struct
net_device
*
dev
,
u32
*
itag
)
u32
*
itag
)
{
{
struct
in_device
*
in_dev
;
struct
in_device
*
in_dev
;
struct
flowi4
fl4
;
struct
flowi4
fl4
;
...
@@ -258,7 +257,6 @@ int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst, u8 tos,
...
@@ -258,7 +257,6 @@ int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst, u8 tos,
if
(
res
.
type
!=
RTN_LOCAL
||
!
accept_local
)
if
(
res
.
type
!=
RTN_LOCAL
||
!
accept_local
)
goto
e_inval
;
goto
e_inval
;
}
}
*
spec_dst
=
FIB_RES_PREFSRC
(
net
,
res
);
fib_combine_itag
(
itag
,
&
res
);
fib_combine_itag
(
itag
,
&
res
);
dev_match
=
false
;
dev_match
=
false
;
...
@@ -287,17 +285,14 @@ int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst, u8 tos,
...
@@ -287,17 +285,14 @@ int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst, u8 tos,
ret
=
0
;
ret
=
0
;
if
(
fib_lookup
(
net
,
&
fl4
,
&
res
)
==
0
)
{
if
(
fib_lookup
(
net
,
&
fl4
,
&
res
)
==
0
)
{
if
(
res
.
type
==
RTN_UNICAST
)
{
if
(
res
.
type
==
RTN_UNICAST
)
*
spec_dst
=
FIB_RES_PREFSRC
(
net
,
res
);
ret
=
FIB_RES_NH
(
res
).
nh_scope
>=
RT_SCOPE_HOST
;
ret
=
FIB_RES_NH
(
res
).
nh_scope
>=
RT_SCOPE_HOST
;
}
}
}
return
ret
;
return
ret
;
last_resort:
last_resort:
if
(
rpf
)
if
(
rpf
)
goto
e_rpf
;
goto
e_rpf
;
*
spec_dst
=
inet_select_addr
(
dev
,
0
,
RT_SCOPE_UNIVERSE
);
*
itag
=
0
;
*
itag
=
0
;
return
0
;
return
0
;
...
...
net/ipv4/route.c
View file @
41347dcd
...
@@ -440,7 +440,7 @@ static int rt_cache_seq_show(struct seq_file *seq, void *v)
...
@@ -440,7 +440,7 @@ static int rt_cache_seq_show(struct seq_file *seq, void *v)
r
->
rt_key_tos
,
r
->
rt_key_tos
,
-
1
,
-
1
,
HHUptod
,
HHUptod
,
r
->
rt_spec_dst
,
&
len
);
0
,
&
len
);
seq_printf
(
seq
,
"%*s
\n
"
,
127
-
len
,
""
);
seq_printf
(
seq
,
"%*s
\n
"
,
127
-
len
,
""
);
}
}
...
@@ -1978,7 +1978,6 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
...
@@ -1978,7 +1978,6 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
{
{
unsigned
int
hash
;
unsigned
int
hash
;
struct
rtable
*
rth
;
struct
rtable
*
rth
;
__be32
spec_dst
;
struct
in_device
*
in_dev
=
__in_dev_get_rcu
(
dev
);
struct
in_device
*
in_dev
=
__in_dev_get_rcu
(
dev
);
u32
itag
=
0
;
u32
itag
=
0
;
int
err
;
int
err
;
...
@@ -1999,10 +1998,8 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
...
@@ -1999,10 +1998,8 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
if
(
ipv4_is_zeronet
(
saddr
))
{
if
(
ipv4_is_zeronet
(
saddr
))
{
if
(
!
ipv4_is_local_multicast
(
daddr
))
if
(
!
ipv4_is_local_multicast
(
daddr
))
goto
e_inval
;
goto
e_inval
;
spec_dst
=
inet_select_addr
(
dev
,
0
,
RT_SCOPE_LINK
);
}
else
{
}
else
{
err
=
fib_validate_source
(
skb
,
saddr
,
0
,
tos
,
0
,
dev
,
&
spec_dst
,
err
=
fib_validate_source
(
skb
,
saddr
,
0
,
tos
,
0
,
dev
,
&
itag
);
&
itag
);
if
(
err
<
0
)
if
(
err
<
0
)
goto
e_err
;
goto
e_err
;
}
}
...
@@ -2029,7 +2026,6 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
...
@@ -2029,7 +2026,6 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr,
rth
->
rt_oif
=
0
;
rth
->
rt_oif
=
0
;
rth
->
rt_mark
=
skb
->
mark
;
rth
->
rt_mark
=
skb
->
mark
;
rth
->
rt_gateway
=
daddr
;
rth
->
rt_gateway
=
daddr
;
rth
->
rt_spec_dst
=
spec_dst
;
rth
->
rt_peer_genid
=
0
;
rth
->
rt_peer_genid
=
0
;
rt_init_peer
(
rth
,
dev_net
(
dev
)
->
ipv4
.
peers
);
rt_init_peer
(
rth
,
dev_net
(
dev
)
->
ipv4
.
peers
);
rth
->
fi
=
NULL
;
rth
->
fi
=
NULL
;
...
@@ -2093,7 +2089,6 @@ static int __mkroute_input(struct sk_buff *skb,
...
@@ -2093,7 +2089,6 @@ static int __mkroute_input(struct sk_buff *skb,
int
err
;
int
err
;
struct
in_device
*
out_dev
;
struct
in_device
*
out_dev
;
unsigned
int
flags
=
0
;
unsigned
int
flags
=
0
;
__be32
spec_dst
;
u32
itag
;
u32
itag
;
/* get a working reference to the output device */
/* get a working reference to the output device */
...
@@ -2105,7 +2100,7 @@ static int __mkroute_input(struct sk_buff *skb,
...
@@ -2105,7 +2100,7 @@ static int __mkroute_input(struct sk_buff *skb,
err
=
fib_validate_source
(
skb
,
saddr
,
daddr
,
tos
,
FIB_RES_OIF
(
*
res
),
err
=
fib_validate_source
(
skb
,
saddr
,
daddr
,
tos
,
FIB_RES_OIF
(
*
res
),
in_dev
->
dev
,
&
spec_dst
,
&
itag
);
in_dev
->
dev
,
&
itag
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
ip_handle_martian_source
(
in_dev
->
dev
,
in_dev
,
skb
,
daddr
,
ip_handle_martian_source
(
in_dev
->
dev
,
in_dev
,
skb
,
daddr
,
saddr
);
saddr
);
...
@@ -2157,7 +2152,6 @@ static int __mkroute_input(struct sk_buff *skb,
...
@@ -2157,7 +2152,6 @@ static int __mkroute_input(struct sk_buff *skb,
rth
->
rt_oif
=
0
;
rth
->
rt_oif
=
0
;
rth
->
rt_mark
=
skb
->
mark
;
rth
->
rt_mark
=
skb
->
mark
;
rth
->
rt_gateway
=
daddr
;
rth
->
rt_gateway
=
daddr
;
rth
->
rt_spec_dst
=
spec_dst
;
rth
->
rt_peer_genid
=
0
;
rth
->
rt_peer_genid
=
0
;
rt_init_peer
(
rth
,
&
res
->
table
->
tb_peers
);
rt_init_peer
(
rth
,
&
res
->
table
->
tb_peers
);
rth
->
fi
=
NULL
;
rth
->
fi
=
NULL
;
...
@@ -2223,7 +2217,6 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
...
@@ -2223,7 +2217,6 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
u32
itag
=
0
;
u32
itag
=
0
;
struct
rtable
*
rth
;
struct
rtable
*
rth
;
unsigned
int
hash
;
unsigned
int
hash
;
__be32
spec_dst
;
int
err
=
-
EINVAL
;
int
err
=
-
EINVAL
;
struct
net
*
net
=
dev_net
(
dev
);
struct
net
*
net
=
dev_net
(
dev
);
...
@@ -2281,12 +2274,11 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
...
@@ -2281,12 +2274,11 @@ static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
if
(
res
.
type
==
RTN_LOCAL
)
{
if
(
res
.
type
==
RTN_LOCAL
)
{
err
=
fib_validate_source
(
skb
,
saddr
,
daddr
,
tos
,
err
=
fib_validate_source
(
skb
,
saddr
,
daddr
,
tos
,
net
->
loopback_dev
->
ifindex
,
net
->
loopback_dev
->
ifindex
,
dev
,
&
spec_dst
,
&
itag
);
dev
,
&
itag
);
if
(
err
<
0
)
if
(
err
<
0
)
goto
martian_source_keep_err
;
goto
martian_source_keep_err
;
if
(
err
)
if
(
err
)
flags
|=
RTCF_DIRECTSRC
;
flags
|=
RTCF_DIRECTSRC
;
spec_dst
=
daddr
;
goto
local_input
;
goto
local_input
;
}
}
...
@@ -2302,11 +2294,8 @@ out: return err;
...
@@ -2302,11 +2294,8 @@ out: return err;
if
(
skb
->
protocol
!=
htons
(
ETH_P_IP
))
if
(
skb
->
protocol
!=
htons
(
ETH_P_IP
))
goto
e_inval
;
goto
e_inval
;
if
(
ipv4_is_zeronet
(
saddr
))
if
(
!
ipv4_is_zeronet
(
saddr
))
{
spec_dst
=
inet_select_addr
(
dev
,
0
,
RT_SCOPE_LINK
);
err
=
fib_validate_source
(
skb
,
saddr
,
0
,
tos
,
0
,
dev
,
&
itag
);
else
{
err
=
fib_validate_source
(
skb
,
saddr
,
0
,
tos
,
0
,
dev
,
&
spec_dst
,
&
itag
);
if
(
err
<
0
)
if
(
err
<
0
)
goto
martian_source_keep_err
;
goto
martian_source_keep_err
;
if
(
err
)
if
(
err
)
...
@@ -2344,7 +2333,6 @@ out: return err;
...
@@ -2344,7 +2333,6 @@ out: return err;
rth
->
rt_oif
=
0
;
rth
->
rt_oif
=
0
;
rth
->
rt_mark
=
skb
->
mark
;
rth
->
rt_mark
=
skb
->
mark
;
rth
->
rt_gateway
=
daddr
;
rth
->
rt_gateway
=
daddr
;
rth
->
rt_spec_dst
=
spec_dst
;
rth
->
rt_peer_genid
=
0
;
rth
->
rt_peer_genid
=
0
;
rt_init_peer
(
rth
,
net
->
ipv4
.
peers
);
rt_init_peer
(
rth
,
net
->
ipv4
.
peers
);
rth
->
fi
=
NULL
;
rth
->
fi
=
NULL
;
...
@@ -2362,7 +2350,6 @@ out: return err;
...
@@ -2362,7 +2350,6 @@ out: return err;
no_route:
no_route:
RT_CACHE_STAT_INC
(
in_no_route
);
RT_CACHE_STAT_INC
(
in_no_route
);
spec_dst
=
inet_select_addr
(
dev
,
0
,
RT_SCOPE_UNIVERSE
);
res
.
type
=
RTN_UNREACHABLE
;
res
.
type
=
RTN_UNREACHABLE
;
if
(
err
==
-
ESRCH
)
if
(
err
==
-
ESRCH
)
err
=
-
ENETUNREACH
;
err
=
-
ENETUNREACH
;
...
@@ -2545,7 +2532,6 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
...
@@ -2545,7 +2532,6 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
rth
->
rt_oif
=
orig_oif
;
rth
->
rt_oif
=
orig_oif
;
rth
->
rt_mark
=
fl4
->
flowi4_mark
;
rth
->
rt_mark
=
fl4
->
flowi4_mark
;
rth
->
rt_gateway
=
fl4
->
daddr
;
rth
->
rt_gateway
=
fl4
->
daddr
;
rth
->
rt_spec_dst
=
fl4
->
saddr
;
rth
->
rt_peer_genid
=
0
;
rth
->
rt_peer_genid
=
0
;
rt_init_peer
(
rth
,
(
res
->
table
?
rt_init_peer
(
rth
,
(
res
->
table
?
&
res
->
table
->
tb_peers
:
&
res
->
table
->
tb_peers
:
...
@@ -2554,12 +2540,9 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
...
@@ -2554,12 +2540,9 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
RT_CACHE_STAT_INC
(
out_slow_tot
);
RT_CACHE_STAT_INC
(
out_slow_tot
);
if
(
flags
&
RTCF_LOCAL
)
{
if
(
flags
&
RTCF_LOCAL
)
rth
->
dst
.
input
=
ip_local_deliver
;
rth
->
dst
.
input
=
ip_local_deliver
;
rth
->
rt_spec_dst
=
fl4
->
daddr
;
}
if
(
flags
&
(
RTCF_BROADCAST
|
RTCF_MULTICAST
))
{
if
(
flags
&
(
RTCF_BROADCAST
|
RTCF_MULTICAST
))
{
rth
->
rt_spec_dst
=
fl4
->
saddr
;
if
(
flags
&
RTCF_LOCAL
&&
if
(
flags
&
RTCF_LOCAL
&&
!
(
dev_out
->
flags
&
IFF_LOOPBACK
))
{
!
(
dev_out
->
flags
&
IFF_LOOPBACK
))
{
rth
->
dst
.
output
=
ip_mc_output
;
rth
->
dst
.
output
=
ip_mc_output
;
...
@@ -2890,7 +2873,6 @@ struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_or
...
@@ -2890,7 +2873,6 @@ struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_or
rt
->
rt_dst
=
ort
->
rt_dst
;
rt
->
rt_dst
=
ort
->
rt_dst
;
rt
->
rt_src
=
ort
->
rt_src
;
rt
->
rt_src
=
ort
->
rt_src
;
rt
->
rt_gateway
=
ort
->
rt_gateway
;
rt
->
rt_gateway
=
ort
->
rt_gateway
;
rt
->
rt_spec_dst
=
ort
->
rt_spec_dst
;
rt_transfer_peer
(
rt
,
ort
);
rt_transfer_peer
(
rt
,
ort
);
rt
->
fi
=
ort
->
fi
;
rt
->
fi
=
ort
->
fi
;
if
(
rt
->
fi
)
if
(
rt
->
fi
)
...
@@ -2965,10 +2947,8 @@ static int rt_fill_info(struct net *net,
...
@@ -2965,10 +2947,8 @@ static int rt_fill_info(struct net *net,
nla_put_u32
(
skb
,
RTA_FLOW
,
rt
->
dst
.
tclassid
))
nla_put_u32
(
skb
,
RTA_FLOW
,
rt
->
dst
.
tclassid
))
goto
nla_put_failure
;
goto
nla_put_failure
;
#endif
#endif
if
(
rt_is_input_route
(
rt
))
{
if
(
!
rt_is_input_route
(
rt
)
&&
if
(
nla_put_be32
(
skb
,
RTA_PREFSRC
,
rt
->
rt_spec_dst
))
rt
->
rt_src
!=
rt
->
rt_key_src
)
{
goto
nla_put_failure
;
}
else
if
(
rt
->
rt_src
!=
rt
->
rt_key_src
)
{
if
(
nla_put_be32
(
skb
,
RTA_PREFSRC
,
rt
->
rt_src
))
if
(
nla_put_be32
(
skb
,
RTA_PREFSRC
,
rt
->
rt_src
))
goto
nla_put_failure
;
goto
nla_put_failure
;
}
}
...
...
net/ipv4/xfrm4_policy.c
View file @
41347dcd
...
@@ -100,7 +100,6 @@ static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
...
@@ -100,7 +100,6 @@ static int xfrm4_fill_dst(struct xfrm_dst *xdst, struct net_device *dev,
xdst
->
u
.
rt
.
rt_src
=
rt
->
rt_src
;
xdst
->
u
.
rt
.
rt_src
=
rt
->
rt_src
;
xdst
->
u
.
rt
.
rt_dst
=
rt
->
rt_dst
;
xdst
->
u
.
rt
.
rt_dst
=
rt
->
rt_dst
;
xdst
->
u
.
rt
.
rt_gateway
=
rt
->
rt_gateway
;
xdst
->
u
.
rt
.
rt_gateway
=
rt
->
rt_gateway
;
xdst
->
u
.
rt
.
rt_spec_dst
=
rt
->
rt_spec_dst
;
return
0
;
return
0
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment