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
Kirill Smelkov
linux
Commits
16daa730
Commit
16daa730
authored
May 15, 2003
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[NET]: Hoplimit is a metric not a route attribute.
parent
0ee27163
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
23 additions
and
34 deletions
+23
-34
include/linux/ipv6_route.h
include/linux/ipv6_route.h
+0
-9
include/linux/rtnetlink.h
include/linux/rtnetlink.h
+4
-3
include/net/dn_fib.h
include/net/dn_fib.h
+0
-1
include/net/ip6_fib.h
include/net/ip6_fib.h
+0
-1
include/net/ip_fib.h
include/net/ip_fib.h
+0
-1
net/ipv6/icmp.c
net/ipv6/icmp.c
+2
-2
net/ipv6/ip6_output.c
net/ipv6/ip6_output.c
+2
-2
net/ipv6/ndisc.c
net/ipv6/ndisc.c
+1
-1
net/ipv6/raw.c
net/ipv6/raw.c
+1
-1
net/ipv6/route.c
net/ipv6/route.c
+12
-11
net/ipv6/udp.c
net/ipv6/udp.c
+1
-1
net/ipv6/xfrm6_policy.c
net/ipv6/xfrm6_policy.c
+0
-1
No files found.
include/linux/ipv6_route.h
View file @
16daa730
...
@@ -13,15 +13,6 @@
...
@@ -13,15 +13,6 @@
#ifndef _LINUX_IPV6_ROUTE_H
#ifndef _LINUX_IPV6_ROUTE_H
#define _LINUX_IPV6_ROUTE_H
#define _LINUX_IPV6_ROUTE_H
enum
{
RTA_IPV6_UNSPEC
,
RTA_IPV6_HOPLIMIT
,
};
#define RTA_IPV6_MAX RTA_IPV6_HOPLIMIT
#define RTF_DEFAULT 0x00010000
/* default - learned via ND */
#define RTF_DEFAULT 0x00010000
/* default - learned via ND */
#define RTF_ALLONLINK 0x00020000
/* fallback, no routers on link */
#define RTF_ALLONLINK 0x00020000
/* fallback, no routers on link */
#define RTF_ADDRCONF 0x00040000
/* addrconf route - RA */
#define RTF_ADDRCONF 0x00040000
/* addrconf route - RA */
...
...
include/linux/rtnetlink.h
View file @
16daa730
...
@@ -201,10 +201,9 @@ enum rtattr_type_t
...
@@ -201,10 +201,9 @@ enum rtattr_type_t
RTA_FLOW
,
RTA_FLOW
,
RTA_CACHEINFO
,
RTA_CACHEINFO
,
RTA_SESSION
,
RTA_SESSION
,
RTA_HOPLIMIT
,
};
};
#define RTA_MAX RTA_
HOPLIMIT
#define RTA_MAX RTA_
SESSION
#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
#define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
#define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
...
@@ -283,9 +282,11 @@ enum
...
@@ -283,9 +282,11 @@ enum
#define RTAX_ADVMSS RTAX_ADVMSS
#define RTAX_ADVMSS RTAX_ADVMSS
RTAX_REORDERING
,
RTAX_REORDERING
,
#define RTAX_REORDERING RTAX_REORDERING
#define RTAX_REORDERING RTAX_REORDERING
RTAX_HOPLIMIT
,
#define RTAX_HOPLIMIT RTAX_HOPLIMIT
};
};
#define RTAX_MAX RTAX_
REORDERING
#define RTAX_MAX RTAX_
HOPLIMIT
struct
rta_session
struct
rta_session
{
{
...
...
include/net/dn_fib.h
View file @
16daa730
...
@@ -19,7 +19,6 @@ struct dn_kern_rta
...
@@ -19,7 +19,6 @@ struct dn_kern_rta
u32
*
rta_flow
;
u32
*
rta_flow
;
struct
rta_cacheinfo
*
rta_ci
;
struct
rta_cacheinfo
*
rta_ci
;
struct
rta_session
*
rta_sess
;
struct
rta_session
*
rta_sess
;
u8
*
rta_hoplimit
;
};
};
struct
dn_fib_res
{
struct
dn_fib_res
{
...
...
include/net/ip6_fib.h
View file @
16daa730
...
@@ -67,7 +67,6 @@ struct rt6_info
...
@@ -67,7 +67,6 @@ struct rt6_info
u32
rt6i_flags
;
u32
rt6i_flags
;
u32
rt6i_metric
;
u32
rt6i_metric
;
u8
rt6i_hoplimit
;
atomic_t
rt6i_ref
;
atomic_t
rt6i_ref
;
struct
rt6key
rt6i_dst
;
struct
rt6key
rt6i_dst
;
...
...
include/net/ip_fib.h
View file @
16daa730
...
@@ -38,7 +38,6 @@ struct kern_rta
...
@@ -38,7 +38,6 @@ struct kern_rta
u32
*
rta_flow
;
u32
*
rta_flow
;
struct
rta_cacheinfo
*
rta_ci
;
struct
rta_cacheinfo
*
rta_ci
;
struct
rta_session
*
rta_sess
;
struct
rta_session
*
rta_sess
;
u8
*
rta_hoplimit
;
};
};
struct
fib_nh
struct
fib_nh
...
...
net/ipv6/icmp.c
View file @
16daa730
...
@@ -362,7 +362,7 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
...
@@ -362,7 +362,7 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info,
else
else
hlimit
=
np
->
hop_limit
;
hlimit
=
np
->
hop_limit
;
if
(
hlimit
<
0
)
if
(
hlimit
<
0
)
hlimit
=
((
struct
rt6_info
*
)
dst
)
->
rt6i_hoplimit
;
hlimit
=
dst_metric
(
dst
,
RTAX_HOPLIMIT
)
;
}
}
plen
=
skb
->
nh
.
raw
-
skb
->
data
;
plen
=
skb
->
nh
.
raw
-
skb
->
data
;
...
@@ -443,7 +443,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
...
@@ -443,7 +443,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
else
else
hlimit
=
np
->
hop_limit
;
hlimit
=
np
->
hop_limit
;
if
(
hlimit
<
0
)
if
(
hlimit
<
0
)
hlimit
=
((
struct
rt6_info
*
)
dst
)
->
rt6i_hoplimit
;
hlimit
=
dst_metric
(
dst
,
RTAX_HOPLIMIT
)
;
}
}
idev
=
in6_dev_get
(
skb
->
dev
);
idev
=
in6_dev_get
(
skb
->
dev
);
...
...
net/ipv6/ip6_output.c
View file @
16daa730
...
@@ -249,7 +249,7 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
...
@@ -249,7 +249,7 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
if
(
np
)
if
(
np
)
hlimit
=
np
->
hop_limit
;
hlimit
=
np
->
hop_limit
;
if
(
hlimit
<
0
)
if
(
hlimit
<
0
)
hlimit
=
((
struct
rt6_info
*
)
dst
)
->
rt6i_hoplimit
;
hlimit
=
dst_metric
(
dst
,
RTAX_HOPLIMIT
)
;
hdr
->
payload_len
=
htons
(
seg_len
);
hdr
->
payload_len
=
htons
(
seg_len
);
hdr
->
nexthdr
=
proto
;
hdr
->
nexthdr
=
proto
;
...
@@ -609,7 +609,7 @@ int ip6_build_xmit(struct sock *sk, inet_getfrag_t getfrag, const void *data,
...
@@ -609,7 +609,7 @@ int ip6_build_xmit(struct sock *sk, inet_getfrag_t getfrag, const void *data,
else
else
hlimit
=
np
->
hop_limit
;
hlimit
=
np
->
hop_limit
;
if
(
hlimit
<
0
)
if
(
hlimit
<
0
)
hlimit
=
((
struct
rt6_info
*
)
dst
)
->
rt6i_hoplimit
;
hlimit
=
dst_metric
(
dst
,
RTAX_HOPLIMIT
)
;
}
}
jumbolen
=
0
;
jumbolen
=
0
;
...
...
net/ipv6/ndisc.c
View file @
16daa730
...
@@ -397,7 +397,7 @@ static inline void ndisc_rt_init(struct rt6_info *rt, struct net_device *dev,
...
@@ -397,7 +397,7 @@ static inline void ndisc_rt_init(struct rt6_info *rt, struct net_device *dev,
rt
->
rt6i_expires
=
0
;
rt
->
rt6i_expires
=
0
;
rt
->
rt6i_flags
=
RTF_LOCAL
;
rt
->
rt6i_flags
=
RTF_LOCAL
;
rt
->
rt6i_metric
=
0
;
rt
->
rt6i_metric
=
0
;
rt
->
rt6i_hoplimit
=
255
;
rt
->
u
.
dst
.
metrics
[
RTAX_HOPLIMIT
-
1
]
=
255
;
rt
->
u
.
dst
.
output
=
ndisc_output
;
rt
->
u
.
dst
.
output
=
ndisc_output
;
}
}
...
...
net/ipv6/raw.c
View file @
16daa730
...
@@ -677,7 +677,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg
...
@@ -677,7 +677,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg
else
else
hlimit
=
np
->
hop_limit
;
hlimit
=
np
->
hop_limit
;
if
(
hlimit
<
0
)
if
(
hlimit
<
0
)
hlimit
=
((
struct
rt6_info
*
)
dst
)
->
rt6i_hoplimit
;
hlimit
=
dst_metric
(
dst
,
RTAX_HOPLIMIT
)
;
}
}
if
(
msg
->
msg_flags
&
MSG_CONFIRM
)
if
(
msg
->
msg_flags
&
MSG_CONFIRM
)
...
...
net/ipv6/route.c
View file @
16daa730
...
@@ -108,6 +108,7 @@ struct rt6_info ip6_null_entry = {
...
@@ -108,6 +108,7 @@ struct rt6_info ip6_null_entry = {
.
dev
=
&
loopback_dev
,
.
dev
=
&
loopback_dev
,
.
obsolete
=
-
1
,
.
obsolete
=
-
1
,
.
error
=
-
ENETUNREACH
,
.
error
=
-
ENETUNREACH
,
.
metrics
[
RTAX_HOPLIMIT
-
1
]
=
255
,
.
input
=
ip6_pkt_discard
,
.
input
=
ip6_pkt_discard
,
.
output
=
ip6_pkt_discard
,
.
output
=
ip6_pkt_discard
,
.
ops
=
&
ip6_dst_ops
,
.
ops
=
&
ip6_dst_ops
,
...
@@ -116,7 +117,6 @@ struct rt6_info ip6_null_entry = {
...
@@ -116,7 +117,6 @@ struct rt6_info ip6_null_entry = {
},
},
.
rt6i_flags
=
(
RTF_REJECT
|
RTF_NONEXTHOP
),
.
rt6i_flags
=
(
RTF_REJECT
|
RTF_NONEXTHOP
),
.
rt6i_metric
=
~
(
u32
)
0
,
.
rt6i_metric
=
~
(
u32
)
0
,
.
rt6i_hoplimit
=
255
,
.
rt6i_ref
=
ATOMIC_INIT
(
1
),
.
rt6i_ref
=
ATOMIC_INIT
(
1
),
};
};
...
@@ -769,13 +769,6 @@ int ip6_route_add(struct in6_rtmsg *rtmsg, struct nlmsghdr *nlh, void *_rtattr)
...
@@ -769,13 +769,6 @@ int ip6_route_add(struct in6_rtmsg *rtmsg, struct nlmsghdr *nlh, void *_rtattr)
}
}
}
}
if
(
ipv6_addr_is_multicast
(
&
rt
->
rt6i_dst
.
addr
))
rt
->
rt6i_hoplimit
=
IPV6_DEFAULT_MCASTHOPS
;
else
if
(
rta
&&
rta
[
RTA_HOPLIMIT
-
1
])
memcpy
(
&
rt
->
rt6i_hoplimit
,
RTA_DATA
(
rta
[
RTA_HOPLIMIT
-
1
]),
1
);
else
rt
->
rt6i_hoplimit
=
ipv6_get_hoplimit
(
dev
);
rt
->
rt6i_flags
=
rtmsg
->
rtmsg_flags
;
rt
->
rt6i_flags
=
rtmsg
->
rtmsg_flags
;
install_route:
install_route:
...
@@ -796,6 +789,16 @@ int ip6_route_add(struct in6_rtmsg *rtmsg, struct nlmsghdr *nlh, void *_rtattr)
...
@@ -796,6 +789,16 @@ int ip6_route_add(struct in6_rtmsg *rtmsg, struct nlmsghdr *nlh, void *_rtattr)
attr
=
RTA_NEXT
(
attr
,
attrlen
);
attr
=
RTA_NEXT
(
attr
,
attrlen
);
}
}
}
}
if
(
rt
->
u
.
dst
.
metrics
[
RTAX_HOPLIMIT
-
1
]
==
0
)
{
if
(
ipv6_addr_is_multicast
(
&
rt
->
rt6i_dst
.
addr
))
rt
->
u
.
dst
.
metrics
[
RTAX_HOPLIMIT
-
1
]
=
IPV6_DEFAULT_MCASTHOPS
;
else
rt
->
u
.
dst
.
metrics
[
RTAX_HOPLIMIT
-
1
]
=
ipv6_get_hoplimit
(
dev
);
}
if
(
!
rt
->
u
.
dst
.
metrics
[
RTAX_MTU
-
1
])
if
(
!
rt
->
u
.
dst
.
metrics
[
RTAX_MTU
-
1
])
rt
->
u
.
dst
.
metrics
[
RTAX_MTU
-
1
]
=
ipv6_get_mtu
(
dev
);
rt
->
u
.
dst
.
metrics
[
RTAX_MTU
-
1
]
=
ipv6_get_mtu
(
dev
);
if
(
!
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
])
if
(
!
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
])
...
@@ -964,7 +967,6 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *saddr,
...
@@ -964,7 +967,6 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *saddr,
nrt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
max_t
(
unsigned
int
,
dst_pmtu
(
&
nrt
->
u
.
dst
)
-
60
,
ip6_rt_min_advmss
);
nrt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
max_t
(
unsigned
int
,
dst_pmtu
(
&
nrt
->
u
.
dst
)
-
60
,
ip6_rt_min_advmss
);
if
(
nrt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
>
65535
-
20
)
if
(
nrt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
>
65535
-
20
)
nrt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
65535
;
nrt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
65535
;
nrt
->
rt6i_hoplimit
=
ipv6_get_hoplimit
(
neigh
->
dev
);
if
(
rt6_ins
(
nrt
,
NULL
,
NULL
))
if
(
rt6_ins
(
nrt
,
NULL
,
NULL
))
goto
out
;
goto
out
;
...
@@ -1080,7 +1082,6 @@ static struct rt6_info * ip6_rt_copy(struct rt6_info *ort)
...
@@ -1080,7 +1082,6 @@ static struct rt6_info * ip6_rt_copy(struct rt6_info *ort)
if
(
rt
->
u
.
dst
.
dev
)
if
(
rt
->
u
.
dst
.
dev
)
dev_hold
(
rt
->
u
.
dst
.
dev
);
dev_hold
(
rt
->
u
.
dst
.
dev
);
rt
->
u
.
dst
.
lastuse
=
jiffies
;
rt
->
u
.
dst
.
lastuse
=
jiffies
;
rt
->
rt6i_hoplimit
=
ort
->
rt6i_hoplimit
;
rt
->
rt6i_expires
=
0
;
rt
->
rt6i_expires
=
0
;
ipv6_addr_copy
(
&
rt
->
rt6i_gateway
,
&
ort
->
rt6i_gateway
);
ipv6_addr_copy
(
&
rt
->
rt6i_gateway
,
&
ort
->
rt6i_gateway
);
...
@@ -1226,7 +1227,7 @@ int ip6_rt_addr_add(struct in6_addr *addr, struct net_device *dev)
...
@@ -1226,7 +1227,7 @@ int ip6_rt_addr_add(struct in6_addr *addr, struct net_device *dev)
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
max_t
(
unsigned
int
,
dst_pmtu
(
&
rt
->
u
.
dst
)
-
60
,
ip6_rt_min_advmss
);
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
max_t
(
unsigned
int
,
dst_pmtu
(
&
rt
->
u
.
dst
)
-
60
,
ip6_rt_min_advmss
);
if
(
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
>
65535
-
20
)
if
(
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
>
65535
-
20
)
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
65535
;
rt
->
u
.
dst
.
metrics
[
RTAX_ADVMSS
-
1
]
=
65535
;
rt
->
rt6i_hoplimit
=
ipv6_get_hoplimit
(
rt
->
rt6i_dev
);
rt
->
u
.
dst
.
metrics
[
RTAX_HOPLIMIT
-
1
]
=
ipv6_get_hoplimit
(
rt
->
rt6i_dev
);
rt
->
u
.
dst
.
obsolete
=
-
1
;
rt
->
u
.
dst
.
obsolete
=
-
1
;
rt
->
rt6i_flags
=
RTF_UP
|
RTF_NONEXTHOP
;
rt
->
rt6i_flags
=
RTF_UP
|
RTF_NONEXTHOP
;
...
...
net/ipv6/udp.c
View file @
16daa730
...
@@ -968,7 +968,7 @@ static int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg
...
@@ -968,7 +968,7 @@ static int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg
else
else
hlimit
=
np
->
hop_limit
;
hlimit
=
np
->
hop_limit
;
if
(
hlimit
<
0
)
if
(
hlimit
<
0
)
hlimit
=
((
struct
rt6_info
*
)
dst
)
->
rt6i_hoplimit
;
hlimit
=
dst_metric
(
dst
,
RTAX_HOPLIMIT
)
;
}
}
if
(
msg
->
msg_flags
&
MSG_CONFIRM
)
if
(
msg
->
msg_flags
&
MSG_CONFIRM
)
...
...
net/ipv6/xfrm6_policy.c
View file @
16daa730
...
@@ -153,7 +153,6 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int
...
@@ -153,7 +153,6 @@ __xfrm6_bundle_create(struct xfrm_policy *policy, struct xfrm_state **xfrm, int
x
->
u
.
rt6
.
rt6i_flags
=
rt0
->
rt6i_flags
&
(
RTCF_BROADCAST
|
RTCF_MULTICAST
|
RTCF_LOCAL
);
x
->
u
.
rt6
.
rt6i_flags
=
rt0
->
rt6i_flags
&
(
RTCF_BROADCAST
|
RTCF_MULTICAST
|
RTCF_LOCAL
);
x
->
u
.
rt6
.
rt6i_metric
=
rt0
->
rt6i_metric
;
x
->
u
.
rt6
.
rt6i_metric
=
rt0
->
rt6i_metric
;
x
->
u
.
rt6
.
rt6i_node
=
rt0
->
rt6i_node
;
x
->
u
.
rt6
.
rt6i_node
=
rt0
->
rt6i_node
;
x
->
u
.
rt6
.
rt6i_hoplimit
=
rt0
->
rt6i_hoplimit
;
x
->
u
.
rt6
.
rt6i_gateway
=
rt0
->
rt6i_gateway
;
x
->
u
.
rt6
.
rt6i_gateway
=
rt0
->
rt6i_gateway
;
memcpy
(
&
x
->
u
.
rt6
.
rt6i_gateway
,
&
rt0
->
rt6i_gateway
,
sizeof
(
x
->
u
.
rt6
.
rt6i_gateway
));
memcpy
(
&
x
->
u
.
rt6
.
rt6i_gateway
,
&
rt0
->
rt6i_gateway
,
sizeof
(
x
->
u
.
rt6
.
rt6i_gateway
));
header_len
-=
x
->
u
.
dst
.
xfrm
->
props
.
header_len
;
header_len
-=
x
->
u
.
dst
.
xfrm
->
props
.
header_len
;
...
...
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