Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
iproute2
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
iproute2
Commits
03371c7d
Commit
03371c7d
authored
May 28, 2015
by
Stephen Hemminger
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into net-next
Conflicts: include/linux/tcp.h lib/libnetlink.c
parents
aacee269
c52827e9
Changes
34
Show whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
94 additions
and
85 deletions
+94
-85
bridge/fdb.c
bridge/fdb.c
+1
-1
bridge/link.c
bridge/link.c
+1
-1
bridge/mdb.c
bridge/mdb.c
+1
-1
bridge/vlan.c
bridge/vlan.c
+1
-1
genl/ctrl.c
genl/ctrl.c
+2
-2
include/libnetlink.h
include/libnetlink.h
+2
-2
include/linux/rtnetlink.h
include/linux/rtnetlink.h
+1
-1
include/linux/tcp.h
include/linux/tcp.h
+3
-1
ip/ipaddress.c
ip/ipaddress.c
+2
-2
ip/ipaddrlabel.c
ip/ipaddrlabel.c
+2
-2
ip/ipfou.c
ip/ipfou.c
+2
-2
ip/ipl2tp.c
ip/ipl2tp.c
+4
-4
ip/iplink.c
ip/iplink.c
+8
-5
ip/ipneigh.c
ip/ipneigh.c
+1
-1
ip/ipnetns.c
ip/ipnetns.c
+2
-2
ip/ipntable.c
ip/ipntable.c
+1
-1
ip/iproute.c
ip/iproute.c
+5
-5
ip/iprule.c
ip/iprule.c
+2
-2
ip/iptoken.c
ip/iptoken.c
+1
-1
ip/link_gre.c
ip/link_gre.c
+2
-2
ip/link_gre6.c
ip/link_gre6.c
+1
-1
ip/link_ip6tnl.c
ip/link_ip6tnl.c
+1
-1
ip/link_iptnl.c
ip/link_iptnl.c
+1
-1
ip/link_vti.c
ip/link_vti.c
+1
-1
ip/link_vti6.c
ip/link_vti6.c
+1
-1
ip/tcp_metrics.c
ip/tcp_metrics.c
+2
-2
ip/xfrm_policy.c
ip/xfrm_policy.c
+8
-8
ip/xfrm_state.c
ip/xfrm_state.c
+6
-6
lib/libgenl.c
lib/libgenl.c
+1
-1
lib/libnetlink.c
lib/libnetlink.c
+22
-18
tc/m_action.c
tc/m_action.c
+3
-3
tc/tc_class.c
tc/tc_class.c
+1
-1
tc/tc_filter.c
tc/tc_filter.c
+1
-1
tc/tc_qdisc.c
tc/tc_qdisc.c
+1
-1
No files found.
bridge/fdb.c
View file @
03371c7d
...
...
@@ -362,7 +362,7 @@ static int fdb_modify(int cmd, int flags, int argc, char **argv)
return
-
1
;
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
1
;
return
0
;
...
...
bridge/link.c
View file @
03371c7d
...
...
@@ -415,7 +415,7 @@ static int brlink_modify(int argc, char **argv)
addattr_nest_end
(
&
req
.
n
,
nest
);
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
1
;
return
0
;
...
...
bridge/mdb.c
View file @
03371c7d
...
...
@@ -224,7 +224,7 @@ static int mdb_modify(int cmd, int flags, int argc, char **argv)
addattr_l
(
&
req
.
n
,
sizeof
(
req
),
MDBA_SET_ENTRY
,
&
entry
,
sizeof
(
entry
));
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
1
;
return
0
;
...
...
bridge/vlan.c
View file @
03371c7d
...
...
@@ -131,7 +131,7 @@ static int vlan_modify(int cmd, int argc, char **argv)
addattr_nest_end
(
&
req
.
n
,
afspec
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
1
;
return
0
;
...
...
genl/ctrl.c
View file @
03371c7d
...
...
@@ -67,7 +67,7 @@ int genl_ctrl_resolve_family(const char *family)
addattr_l
(
nlh
,
128
,
CTRL_ATTR_FAMILY_NAME
,
family
,
strlen
(
family
)
+
1
);
if
(
rtnl_talk
(
&
rth
,
nlh
,
0
,
0
,
nlh
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
nlh
,
nlh
,
sizeof
(
req
)
)
<
0
)
{
fprintf
(
stderr
,
"Error talking to the kernel
\n
"
);
goto
errout
;
}
...
...
@@ -341,7 +341,7 @@ static int ctrl_list(int cmd, int argc, char **argv)
goto
ctrl_done
;
}
if
(
rtnl_talk
(
&
rth
,
nlh
,
0
,
0
,
nlh
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
nlh
,
nlh
,
sizeof
(
req
)
)
<
0
)
{
fprintf
(
stderr
,
"Error talking to the kernel
\n
"
);
goto
ctrl_done
;
}
...
...
include/libnetlink.h
View file @
03371c7d
...
...
@@ -64,8 +64,8 @@ extern int rtnl_dump_filter_l(struct rtnl_handle *rth,
const
struct
rtnl_dump_filter_arg
*
arg
);
extern
int
rtnl_dump_filter
(
struct
rtnl_handle
*
rth
,
rtnl_filter_t
filter
,
void
*
arg
);
extern
int
rtnl_talk
(
struct
rtnl_handle
*
rtnl
,
struct
nlmsghdr
*
n
,
pid_t
peer
,
unsigned
groups
,
struct
nlmsghdr
*
answer
)
extern
int
rtnl_talk
(
struct
rtnl_handle
*
rtnl
,
struct
nlmsghdr
*
n
,
struct
nlmsghdr
*
answer
,
size_t
len
)
__attribute__
((
warn_unused_result
));
extern
int
rtnl_send
(
struct
rtnl_handle
*
rth
,
const
void
*
buf
,
int
)
__attribute__
((
warn_unused_result
));
...
...
include/linux/rtnetlink.h
View file @
03371c7d
...
...
@@ -337,7 +337,7 @@ struct rtnexthop {
#define RTNH_F_DEAD 1
/* Nexthop is dead (used by multipath) */
#define RTNH_F_PERVASIVE 2
/* Do recursive gateway lookup */
#define RTNH_F_ONLINK 4
/* Gateway is forced on link */
#define RTNH_F_
EXTERNAL 8
/* Route installed externally
*/
#define RTNH_F_
OFFLOAD 8
/* offloaded route
*/
/* Macros to handle hexthops */
...
...
include/linux/tcp.h
View file @
03371c7d
...
...
@@ -194,6 +194,8 @@ struct tcp_info {
__u64
tcpi_max_pacing_rate
;
__u64
tcpi_bytes_acked
;
/* RFC4898 tcpEStatsAppHCThruOctetsAcked */
__u64
tcpi_bytes_received
;
/* RFC4898 tcpEStatsAppHCThruOctetsReceived */
__u32
tcpi_segs_out
;
/* RFC4898 tcpEStatsPerfSegsOut */
__u32
tcpi_segs_in
;
/* RFC4898 tcpEStatsPerfSegsIn */
};
/* for TCP_MD5SIG socket option */
...
...
ip/ipaddress.c
View file @
03371c7d
...
...
@@ -1140,7 +1140,7 @@ static int restore_handler(const struct sockaddr_nl *nl,
ll_init_map
(
&
rth
);
ret
=
rtnl_talk
(
&
rth
,
n
,
0
,
0
,
n
);
ret
=
rtnl_talk
(
&
rth
,
n
,
n
,
sizeof
(
*
n
)
);
if
((
ret
<
0
)
&&
(
errno
==
EEXIST
))
ret
=
0
;
...
...
@@ -1804,7 +1804,7 @@ static int ipaddr_modify(int cmd, int flags, int argc, char **argv)
return
-
1
;
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
ip/ipaddrlabel.c
View file @
03371c7d
...
...
@@ -182,7 +182,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv)
if
(
req
.
ifal
.
ifal_family
==
AF_UNSPEC
)
req
.
ifal
.
ifal_family
=
AF_INET6
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
@@ -209,7 +209,7 @@ static int flush_addrlabel(const struct sockaddr_nl *who, struct nlmsghdr *n, vo
if
(
rtnl_open
(
&
rth2
,
0
)
<
0
)
return
-
1
;
if
(
rtnl_talk
(
&
rth2
,
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth2
,
n
,
NULL
,
0
)
<
0
)
return
-
2
;
rtnl_close
(
&
rth2
);
...
...
ip/ipfou.c
View file @
03371c7d
...
...
@@ -112,7 +112,7 @@ static int do_add(int argc, char **argv)
fou_parse_opt
(
argc
,
argv
,
&
req
.
n
,
true
);
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
@@ -124,7 +124,7 @@ static int do_del(int argc, char **argv)
fou_parse_opt
(
argc
,
argv
,
&
req
.
n
,
false
);
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
ip/ipl2tp.c
View file @
03371c7d
...
...
@@ -119,7 +119,7 @@ static int create_tunnel(struct l2tp_parm *p)
addattr16
(
&
req
.
n
,
1024
,
L2TP_ATTR_UDP_DPORT
,
p
->
peer_udp_port
);
}
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
@@ -132,7 +132,7 @@ static int delete_tunnel(struct l2tp_parm *p)
addattr32
(
&
req
.
n
,
128
,
L2TP_ATTR_CONN_ID
,
p
->
tunnel_id
);
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
@@ -166,7 +166,7 @@ static int create_session(struct l2tp_parm *p)
if
(
p
->
ifname
&&
p
->
ifname
[
0
])
addattrstrz
(
&
req
.
n
,
1024
,
L2TP_ATTR_IFNAME
,
p
->
ifname
);
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
@@ -179,7 +179,7 @@ static int delete_session(struct l2tp_parm *p)
addattr32
(
&
req
.
n
,
1024
,
L2TP_ATTR_CONN_ID
,
p
->
tunnel_id
);
addattr32
(
&
req
.
n
,
1024
,
L2TP_ATTR_SESSION_ID
,
p
->
session_id
);
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
genl_rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
ip/iplink.c
View file @
03371c7d
...
...
@@ -675,7 +675,7 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv)
req
.
i
.
ifi_index
=
0
;
addattr32
(
&
req
.
n
,
sizeof
(
req
),
IFLA_GROUP
,
group
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
return
0
;
}
...
...
@@ -774,7 +774,7 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv)
return
-
1
;
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
return
0
;
...
...
@@ -784,7 +784,10 @@ int iplink_get(unsigned int flags, char *name, __u32 filt_mask)
{
int
len
;
struct
iplink_req
req
;
char
answer
[
16384
];
struct
{
struct
nlmsghdr
n
;
char
buf
[
16384
];
}
answer
;
memset
(
&
req
,
0
,
sizeof
(
req
));
...
...
@@ -804,10 +807,10 @@ int iplink_get(unsigned int flags, char *name, __u32 filt_mask)
}
addattr32
(
&
req
.
n
,
sizeof
(
req
),
IFLA_EXT_MASK
,
filt_mask
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
(
struct
nlmsghdr
*
)
answer
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
answer
.
n
,
sizeof
(
answer
)
)
<
0
)
return
-
2
;
print_linkinfo
(
NULL
,
(
struct
nlmsghdr
*
)
answer
,
stdout
);
print_linkinfo
(
NULL
,
&
answer
.
n
,
stdout
);
return
0
;
}
...
...
ip/ipneigh.c
View file @
03371c7d
...
...
@@ -179,7 +179,7 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv)
return
-
1
;
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
return
0
;
...
...
ip/ipnetns.c
View file @
03371c7d
...
...
@@ -113,7 +113,7 @@ static int get_netnsid_from_name(const char *name)
return
fd
;
addattr32
(
&
req
.
n
,
1024
,
NETNSA_FD
,
fd
);
if
(
rtnl_talk
(
&
rtnsh
,
&
req
.
n
,
0
,
0
,
&
answer
.
n
)
<
0
)
{
if
(
rtnl_talk
(
&
rtnsh
,
&
req
.
n
,
&
answer
.
n
,
sizeof
(
answer
)
)
<
0
)
{
close
(
fd
);
return
-
2
;
}
...
...
@@ -698,7 +698,7 @@ static int set_netnsid_from_name(const char *name, int nsid)
addattr32
(
&
req
.
n
,
1024
,
NETNSA_FD
,
fd
);
addattr32
(
&
req
.
n
,
1024
,
NETNSA_NSID
,
nsid
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
err
=
-
2
;
close
(
fd
);
...
...
ip/ipntable.c
View file @
03371c7d
...
...
@@ -313,7 +313,7 @@ static int ipntable_modify(int cmd, int flags, int argc, char **argv)
RTA_PAYLOAD
(
parms_rta
));
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
return
0
;
...
...
ip/iproute.c
View file @
03371c7d
...
...
@@ -447,7 +447,7 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
fprintf
(
fp
,
"onlink "
);
if
(
r
->
rtm_flags
&
RTNH_F_PERVASIVE
)
fprintf
(
fp
,
"pervasive "
);
if
(
r
->
rtm_flags
&
RTNH_F_
EXTERNAL
)
if
(
r
->
rtm_flags
&
RTNH_F_
OFFLOAD
)
fprintf
(
fp
,
"offload "
);
if
(
r
->
rtm_flags
&
RTM_F_NOTIFY
)
fprintf
(
fp
,
"notify "
);
...
...
@@ -1163,7 +1163,7 @@ static int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
if
(
req
.
r
.
rtm_family
==
AF_UNSPEC
)
req
.
r
.
rtm_family
=
AF_INET
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
@@ -1626,7 +1626,7 @@ static int iproute_get(int argc, char **argv)
if
(
req
.
r
.
rtm_family
==
AF_UNSPEC
)
req
.
r
.
rtm_family
=
AF_INET
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
exit
(
2
);
if
(
connected
&&
!
from_ok
)
{
...
...
@@ -1669,7 +1669,7 @@ static int iproute_get(int argc, char **argv)
req
.
n
.
nlmsg_flags
=
NLM_F_REQUEST
;
req
.
n
.
nlmsg_type
=
RTM_GETROUTE
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
exit
(
2
);
}
...
...
@@ -1691,7 +1691,7 @@ static int restore_handler(const struct sockaddr_nl *nl,
ll_init_map
(
&
rth
);
ret
=
rtnl_talk
(
&
rth
,
n
,
0
,
0
,
n
);
ret
=
rtnl_talk
(
&
rth
,
n
,
n
,
sizeof
(
*
n
)
);
if
((
ret
<
0
)
&&
(
errno
==
EEXIST
))
ret
=
0
;
...
...
ip/iprule.c
View file @
03371c7d
...
...
@@ -380,7 +380,7 @@ static int iprule_modify(int cmd, int argc, char **argv)
if
(
!
table_ok
&&
cmd
==
RTM_NEWRULE
)
req
.
r
.
rtm_table
=
RT_TABLE_MAIN
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
@@ -407,7 +407,7 @@ static int flush_rule(const struct sockaddr_nl *who, struct nlmsghdr *n, void *a
if
(
rtnl_open
(
&
rth2
,
0
)
<
0
)
return
-
1
;
if
(
rtnl_talk
(
&
rth2
,
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth2
,
n
,
NULL
,
0
)
<
0
)
return
-
2
;
rtnl_close
(
&
rth2
);
...
...
ip/iptoken.c
View file @
03371c7d
...
...
@@ -182,7 +182,7 @@ static int iptoken_set(int argc, char **argv)
return
-
1
;
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
return
0
;
...
...
ip/link_gre.c
View file @
03371c7d
...
...
@@ -53,7 +53,7 @@ static int gre_parse_opt(struct link_util *lu, int argc, char **argv,
struct
{
struct
nlmsghdr
n
;
struct
ifinfomsg
i
;
char
buf
[
1
02
4
];
char
buf
[
1
638
4
];
}
req
;
struct
ifinfomsg
*
ifi
=
(
struct
ifinfomsg
*
)(
n
+
1
);
struct
rtattr
*
tb
[
IFLA_MAX
+
1
];
...
...
@@ -84,7 +84,7 @@ static int gre_parse_opt(struct link_util *lu, int argc, char **argv,
req
.
i
.
ifi_family
=
preferred_family
;
req
.
i
.
ifi_index
=
ifi
->
ifi_index
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
{
get_failed:
fprintf
(
stderr
,
"Failed to get existing tunnel info.
\n
"
);
...
...
ip/link_gre6.c
View file @
03371c7d
...
...
@@ -91,7 +91,7 @@ static int gre_parse_opt(struct link_util *lu, int argc, char **argv,
req
.
i
.
ifi_family
=
preferred_family
;
req
.
i
.
ifi_index
=
ifi
->
ifi_index
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
{
get_failed:
fprintf
(
stderr
,
"Failed to get existing tunnel info.
\n
"
);
...
...
ip/link_ip6tnl.c
View file @
03371c7d
...
...
@@ -89,7 +89,7 @@ static int ip6tunnel_parse_opt(struct link_util *lu, int argc, char **argv,
req
.
i
.
ifi_family
=
preferred_family
;
req
.
i
.
ifi_index
=
ifi
->
ifi_index
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
{
get_failed:
fprintf
(
stderr
,
"Failed to get existing tunnel info.
\n
"
);
...
...
ip/link_iptnl.c
View file @
03371c7d
...
...
@@ -91,7 +91,7 @@ static int iptunnel_parse_opt(struct link_util *lu, int argc, char **argv,
req
.
i
.
ifi_family
=
preferred_family
;
req
.
i
.
ifi_index
=
ifi
->
ifi_index
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
{
get_failed:
fprintf
(
stderr
,
"Failed to get existing tunnel info.
\n
"
);
...
...
ip/link_vti.c
View file @
03371c7d
...
...
@@ -71,7 +71,7 @@ static int vti_parse_opt(struct link_util *lu, int argc, char **argv,
req
.
i
.
ifi_family
=
preferred_family
;
req
.
i
.
ifi_index
=
ifi
->
ifi_index
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
{
get_failed:
fprintf
(
stderr
,
"Failed to get existing tunnel info.
\n
"
);
...
...
ip/link_vti6.c
View file @
03371c7d
...
...
@@ -67,7 +67,7 @@ static int vti6_parse_opt(struct link_util *lu, int argc, char **argv,
req
.
i
.
ifi_family
=
preferred_family
;
req
.
i
.
ifi_index
=
ifi
->
ifi_index
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
{
get_failed:
fprintf
(
stderr
,
"Failed to get existing tunnel info.
\n
"
);
...
...
ip/tcp_metrics.c
View file @
03371c7d
...
...
@@ -467,10 +467,10 @@ static int tcpm_do_cmd(int cmd, int argc, char **argv)
}
if
(
ack
)
{
if
(
rtnl_talk
(
&
grth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
grth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
-
2
;
}
else
if
(
atype
>=
0
)
{
if
(
rtnl_talk
(
&
grth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
if
(
rtnl_talk
(
&
grth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
return
-
2
;
if
(
process_msg
(
NULL
,
&
req
.
n
,
stdout
)
<
0
)
{
fprintf
(
stderr
,
"Dump terminated
\n
"
);
...
...
ip/xfrm_policy.c
View file @
03371c7d
...
...
@@ -393,7 +393,7 @@ static int xfrm_policy_modify(int cmd, unsigned flags, int argc, char **argv)
if
(
req
.
xpinfo
.
sel
.
family
==
AF_UNSPEC
)
req
.
xpinfo
.
sel
.
family
=
AF_INET
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
rtnl_close
(
&
rth
);
...
...
@@ -555,7 +555,7 @@ int xfrm_policy_print(const struct sockaddr_nl *who, struct nlmsghdr *n,
}
static
int
xfrm_policy_get_or_delete
(
int
argc
,
char
**
argv
,
int
delete
,
void
*
res_nlbuf
)
void
*
res_nlbuf
,
size_t
res_size
)
{
struct
rtnl_handle
rth
;
struct
{
...
...
@@ -670,7 +670,7 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
(
void
*
)
&
ctx
,
ctx
.
sctx
.
len
);
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
res_nlbuf
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
res_nlbuf
,
res_size
)
<
0
)
exit
(
2
);
rtnl_close
(
&
rth
);
...
...
@@ -680,7 +680,7 @@ static int xfrm_policy_get_or_delete(int argc, char **argv, int delete,
static
int
xfrm_policy_delete
(
int
argc
,
char
**
argv
)
{
return
xfrm_policy_get_or_delete
(
argc
,
argv
,
1
,
NULL
);
return
xfrm_policy_get_or_delete
(
argc
,
argv
,
1
,
NULL
,
0
);
}
static
int
xfrm_policy_get
(
int
argc
,
char
**
argv
)
...
...
@@ -690,7 +690,7 @@ static int xfrm_policy_get(int argc, char **argv)
memset
(
buf
,
0
,
sizeof
(
buf
));
xfrm_policy_get_or_delete
(
argc
,
argv
,
0
,
n
);
xfrm_policy_get_or_delete
(
argc
,
argv
,
0
,
n
,
sizeof
(
buf
)
);
if
(
xfrm_policy_print
(
NULL
,
n
,
(
void
*
)
stdout
)
<
0
)
{
fprintf
(
stderr
,
"An error :-)
\n
"
);
...
...
@@ -1064,7 +1064,7 @@ static int xfrm_spd_setinfo(int argc, char **argv)
if
(
rtnl_open_byproto
(
&
rth
,
0
,
NETLINK_XFRM
)
<
0
)
exit
(
1
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
rtnl_close
(
&
rth
);
...
...
@@ -1091,7 +1091,7 @@ static int xfrm_spd_getinfo(int argc, char **argv)
if
(
rtnl_open_byproto
(
&
rth
,
0
,
NETLINK_XFRM
)
<
0
)
exit
(
1
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
exit
(
2
);
print_spdinfo
(
&
req
.
n
,
(
void
*
)
stdout
);
...
...
@@ -1143,7 +1143,7 @@ static int xfrm_policy_flush(int argc, char **argv)
if
(
show_stats
>
1
)
fprintf
(
stderr
,
"Flush policy
\n
"
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
rtnl_close
(
&
rth
);
...
...
ip/xfrm_state.c
View file @
03371c7d
...
...
@@ -688,7 +688,7 @@ static int xfrm_state_modify(int cmd, unsigned flags, int argc, char **argv)
if
(
req
.
xsinfo
.
family
==
AF_UNSPEC
)
req
.
xsinfo
.
family
=
AF_INET
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
rtnl_close
(
&
rth
);
...
...
@@ -825,7 +825,7 @@ static int xfrm_state_allocspi(int argc, char **argv)
req
.
xspi
.
info
.
family
=
AF_INET
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
res_n
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
res_n
,
sizeof
(
res_buf
)
)
<
0
)
exit
(
2
);
if
(
xfrm_state_print
(
NULL
,
res_n
,
(
void
*
)
stdout
)
<
0
)
{
...
...
@@ -1015,7 +1015,7 @@ static int xfrm_state_get_or_delete(int argc, char **argv, int delete)
req
.
xsid
.
family
=
AF_INET
;
if
(
delete
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
}
else
{
char
buf
[
NLMSG_BUF_SIZE
];
...
...
@@ -1023,7 +1023,7 @@ static int xfrm_state_get_or_delete(int argc, char **argv, int delete)
memset
(
buf
,
0
,
sizeof
(
buf
));
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
res_n
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
res_n
,
sizeof
(
req
)
)
<
0
)
exit
(
2
);
if
(
xfrm_state_print
(
NULL
,
res_n
,
(
void
*
)
stdout
)
<
0
)
{
...
...
@@ -1297,7 +1297,7 @@ static int xfrm_sad_getinfo(int argc, char **argv)
if
(
rtnl_open_byproto
(
&
rth
,
0
,
NETLINK_XFRM
)
<
0
)
exit
(
1
);
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
exit
(
2
);
print_sadinfo
(
&
req
.
n
,
(
void
*
)
stdout
);
...
...
@@ -1351,7 +1351,7 @@ static int xfrm_state_flush(int argc, char **argv)
fprintf
(
stderr
,
"Flush state with XFRM-PROTO value
\"
%s
\"\n
"
,
strxf_xfrmproto
(
req
.
xsf
.
proto
));
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
exit
(
2
);
rtnl_close
(
&
rth
);
...
...
lib/libgenl.c
View file @
03371c7d
...
...
@@ -53,7 +53,7 @@ int genl_resolve_family(struct rtnl_handle *grth, const char *family)
addattr_l
(
&
req
.
n
,
sizeof
(
req
),
CTRL_ATTR_FAMILY_NAME
,
family
,
strlen
(
family
)
+
1
);
if
(
rtnl_talk
(
grth
,
&
req
.
n
,
0
,
0
,
&
req
.
n
)
<
0
)
{
if
(
rtnl_talk
(
grth
,
&
req
.
n
,
&
req
.
n
,
sizeof
(
req
)
)
<
0
)
{
fprintf
(
stderr
,
"Error talking to the kernel
\n
"
);
return
-
2
;
}
...
...
lib/libnetlink.c
View file @
03371c7d
...
...
@@ -29,6 +29,10 @@
#define SOL_NETLINK 270
#endif
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif
int
rcvbuf
=
1024
*
1024
;
void
rtnl_close
(
struct
rtnl_handle
*
rth
)
...
...
@@ -304,8 +308,8 @@ int rtnl_dump_filter(struct rtnl_handle *rth,
return
rtnl_dump_filter_l
(
rth
,
a
);
}
int
rtnl_talk
(
struct
rtnl_handle
*
rtnl
,
struct
nlmsghdr
*
n
,
pid_t
peer
,
unsigned
groups
,
struct
nlmsghdr
*
answer
)
int
rtnl_talk
(
struct
rtnl_handle
*
rtnl
,
struct
nlmsghdr
*
n
,
struct
nlmsghdr
*
answer
,
size_t
len
)
{
int
status
;
unsigned
seq
;
...
...
@@ -321,12 +325,10 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
.
msg_iov
=
&
iov
,
.
msg_iovlen
=
1
,
};
char
buf
[
16384
];
char
buf
[
32768
];
memset
(
&
nladdr
,
0
,
sizeof
(
nladdr
));
nladdr
.
nl_family
=
AF_NETLINK
;
nladdr
.
nl_pid
=
peer
;
nladdr
.
nl_groups
=
groups
;
n
->
nlmsg_seq
=
seq
=
++
rtnl
->
seq
;
...
...
@@ -334,7 +336,6 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
n
->
nlmsg_flags
|=
NLM_F_ACK
;
status
=
sendmsg
(
rtnl
->
fd
,
&
msg
,
0
);
if
(
status
<
0
)
{
perror
(
"Cannot talk to rtnetlink"
);
return
-
1
;
...
...
@@ -343,7 +344,6 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
memset
(
buf
,
0
,
sizeof
(
buf
));
iov
.
iov_base
=
buf
;
while
(
1
)
{
iov
.
iov_len
=
sizeof
(
buf
);
status
=
recvmsg
(
rtnl
->
fd
,
&
msg
,
0
);
...
...
@@ -376,7 +376,7 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
exit
(
1
);
}
if
(
nladdr
.
nl_pid
!=
peer
||
if
(
nladdr
.
nl_pid
!=
0
||
h
->
nlmsg_pid
!=
rtnl
->
local
.
nl_pid
||
h
->
nlmsg_seq
!=
seq
)
{
/* Don't forget to skip that message. */
...
...
@@ -389,20 +389,22 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
struct
nlmsgerr
*
err
=
(
struct
nlmsgerr
*
)
NLMSG_DATA
(
h
);
if
(
l
<
sizeof
(
struct
nlmsgerr
))
{
fprintf
(
stderr
,
"ERROR truncated
\n
"
);
}
else
{
if
(
!
err
->
error
)
{
}
else
if
(
!
err
->
error
)
{
if
(
answer
)
memcpy
(
answer
,
h
,
h
->
nlmsg_len
);
memcpy
(
answer
,
h
,
MIN
(
len
,
h
->
nlmsg_len
));
return
0
;
}
fprintf
(
stderr
,
"RTNETLINK answers: %s
\n
"
,
strerror
(
-
err
->
error
));
fprintf
(
stderr
,
"RTNETLINK answers: %s
\n
"
,
strerror
(
-
err
->
error
));
errno
=
-
err
->
error
;
}
return
-
1
;
}
if
(
answer
)
{
memcpy
(
answer
,
h
,
h
->
nlmsg_len
);
memcpy
(
answer
,
h
,
MIN
(
len
,
h
->
nlmsg_len
));
return
0
;
}
...
...
@@ -411,10 +413,12 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer,
status
-=
NLMSG_ALIGN
(
len
);
h
=
(
struct
nlmsghdr
*
)((
char
*
)
h
+
NLMSG_ALIGN
(
len
));
}
if
(
msg
.
msg_flags
&
MSG_TRUNC
)
{
fprintf
(
stderr
,
"Message truncated
\n
"
);
continue
;
}
if
(
status
)
{
fprintf
(
stderr
,
"!!!Remnant of size %d
\n
"
,
status
);
exit
(
1
);
...
...
tc/m_action.c
View file @
03371c7d
...
...
@@ -472,7 +472,7 @@ static int tc_action_gd(int cmd, unsigned flags, int *argc_p, char ***argv_p)
if
(
cmd
==
RTM_GETACTION
)
ans
=
&
req
.
n
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
ans
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
ans
,
MAX_MSG
)
<
0
)
{
fprintf
(
stderr
,
"We have an error talking to the kernel
\n
"
);
return
1
;
}
...
...
@@ -517,7 +517,7 @@ static int tc_action_modify(int cmd, unsigned flags, int *argc_p, char ***argv_p
}
tail
->
rta_len
=
(
void
*
)
NLMSG_TAIL
(
&
req
.
n
)
-
(
void
*
)
tail
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
{
fprintf
(
stderr
,
"We have an error talking to the kernel
\n
"
);
ret
=
-
1
;
}
...
...
@@ -587,7 +587,7 @@ static int tc_act_list_or_flush(int argc, char **argv, int event)
req
.
n
.
nlmsg_type
=
RTM_DELACTION
;
req
.
n
.
nlmsg_flags
|=
NLM_F_ROOT
;
req
.
n
.
nlmsg_flags
|=
NLM_F_REQUEST
;
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
{
fprintf
(
stderr
,
"We have an error flushing
\n
"
);
return
1
;
}
...
...
tc/tc_class.c
View file @
03371c7d
...
...
@@ -153,7 +153,7 @@ static int tc_class_modify(int cmd, unsigned flags, int argc, char **argv)
}
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
2
;
return
0
;
...
...
tc/tc_filter.c
View file @
03371c7d
...
...
@@ -167,7 +167,7 @@ static int tc_filter_modify(int cmd, unsigned flags, int argc, char **argv)
}
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
{
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
{
fprintf
(
stderr
,
"We have an error talking to the kernel
\n
"
);
return
2
;
}
...
...
tc/tc_qdisc.c
View file @
03371c7d
...
...
@@ -187,7 +187,7 @@ static int tc_qdisc_modify(int cmd, unsigned flags, int argc, char **argv)
req
.
t
.
tcm_ifindex
=
idx
;
}
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
0
,
0
,
NULL
)
<
0
)
if
(
rtnl_talk
(
&
rth
,
&
req
.
n
,
NULL
,
0
)
<
0
)
return
2
;
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