mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-26 09:05:18 +00:00
ip: add support for multicast rules
commit 44a5293c1c47b8c32d9bb0756660ea5d4802acf2
Author: Patrick McHardy <kaber@trash.net>
Date: Tue Apr 13 17:03:47 2010 +0200
ip: add support for multicast rules
Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
parent
8864ac9dc5
commit
b6c8e808fc
3
ip/ip.c
3
ip/ip.c
@ -42,7 +42,7 @@ static void usage(void)
|
|||||||
"Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
"Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n"
|
||||||
" ip [ -force ] -batch filename\n"
|
" ip [ -force ] -batch filename\n"
|
||||||
"where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |\n"
|
"where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |\n"
|
||||||
" tunnel | tuntap | maddr | mroute | monitor | xfrm }\n"
|
" tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm }\n"
|
||||||
" OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n"
|
" OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n"
|
||||||
" -f[amily] { inet | inet6 | ipx | dnet | link } |\n"
|
" -f[amily] { inet | inet6 | ipx | dnet | link } |\n"
|
||||||
" -o[neline] | -t[imestamp] | -b[atch] [filename] |\n"
|
" -o[neline] | -t[imestamp] | -b[atch] [filename] |\n"
|
||||||
@ -76,6 +76,7 @@ static const struct cmd {
|
|||||||
{ "monitor", do_ipmonitor },
|
{ "monitor", do_ipmonitor },
|
||||||
{ "xfrm", do_xfrm },
|
{ "xfrm", do_xfrm },
|
||||||
{ "mroute", do_multiroute },
|
{ "mroute", do_multiroute },
|
||||||
|
{ "mrule", do_multirule },
|
||||||
{ "help", do_help },
|
{ "help", do_help },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|||||||
@ -37,6 +37,7 @@ extern int do_iplink(int argc, char **argv);
|
|||||||
extern int do_ipmonitor(int argc, char **argv);
|
extern int do_ipmonitor(int argc, char **argv);
|
||||||
extern int do_multiaddr(int argc, char **argv);
|
extern int do_multiaddr(int argc, char **argv);
|
||||||
extern int do_multiroute(int argc, char **argv);
|
extern int do_multiroute(int argc, char **argv);
|
||||||
|
extern int do_multirule(int argc, char **argv);
|
||||||
extern int do_xfrm(int argc, char **argv);
|
extern int do_xfrm(int argc, char **argv);
|
||||||
|
|
||||||
static inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb)
|
static inline int rtm_get_table(struct rtmsg *r, struct rtattr **tb)
|
||||||
|
|||||||
17
ip/iprule.c
17
ip/iprule.c
@ -436,3 +436,20 @@ int do_iprule(int argc, char **argv)
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int do_multirule(int argc, char **argv)
|
||||||
|
{
|
||||||
|
switch (preferred_family) {
|
||||||
|
case AF_UNSPEC:
|
||||||
|
case AF_INET:
|
||||||
|
preferred_family = RTNL_FAMILY_IPMR;
|
||||||
|
break;
|
||||||
|
case AF_INET6:
|
||||||
|
preferred_family = RTNL_FAMILY_IP6MR;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "Multicast rules are only supported for IPv4/IPv6\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return do_iprule(argc, argv);
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user