From: Nicolas Escande Date: Fri, 4 Mar 2022 10:33:54 +0000 (+0100) Subject: ip/batadv: allow to specify RA when creating link X-Git-Tag: v5.18.0~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8acb5247e3907762441875f6519b2a60b35c04f7;p=thirdparty%2Fiproute2.git ip/batadv: allow to specify RA when creating link This patch adds the possibility to specify batadv specific options when creating a new batman link. The only option available on link creation is IFLA_BATADV_ALGO_NAME which specifies the routing algorithm. Note there is no batadv specific attr to be handled on link dump. Signed-off-by: Nicolas Escande Signed-off-by: David Ahern --- diff --git a/ip/Makefile b/ip/Makefile index 2a7a51c31..11a361cef 100644 --- a/ip/Makefile +++ b/ip/Makefile @@ -12,7 +12,7 @@ IPOBJ=ip.o ipaddress.o ipaddrlabel.o iproute.o iprule.o ipnetns.o \ iplink_geneve.o iplink_vrf.o iproute_lwtunnel.o ipmacsec.o ipila.o \ ipvrf.o iplink_xstats.o ipseg6.o iplink_netdevsim.o iplink_rmnet.o \ ipnexthop.o ipmptcp.o iplink_bareudp.o iplink_wwan.o ipioam6.o \ - iplink_amt.o + iplink_amt.o iplink_batadv.o RTMONOBJ=rtmon.o diff --git a/ip/iplink_batadv.c b/ip/iplink_batadv.c new file mode 100644 index 000000000..45bd923f7 --- /dev/null +++ b/ip/iplink_batadv.c @@ -0,0 +1,64 @@ +/* + * iplink_batadv.c Batman-adv support + * + * Authors: Nicolas Escande + */ + +#include +#include +#include +#include + +#include "rt_names.h" +#include "utils.h" +#include "ip_common.h" + +static void print_explain(FILE *f) +{ + fprintf(f, + "Usage: ... batadv [ ra ROUTING_ALG ]\n" + "\n" + "Where: ROUTING_ALG := { BATMAN_IV | BATMAN_V }\n" + ); +} + +static void explain(void) +{ + print_explain(stderr); +} + +static int batadv_parse_opt(struct link_util *lu, int argc, char **argv, + struct nlmsghdr *n) +{ + while (argc > 0) { + if (matches(*argv, "ra") == 0) { + NEXT_ARG(); + addattrstrz(n, 1024, IFLA_BATADV_ALGO_NAME, *argv); + } else if (matches(*argv, "help") == 0) { + explain(); + return -1; + } else { + fprintf(stderr, + "batadv: unknown command \"%s\"?\n", + *argv); + explain(); + return -1; + } + argc--, argv++; + } + + return 0; +} + +static void batadv_print_help(struct link_util *lu, int argc, char **argv, + FILE *f) +{ + print_explain(f); +} + +struct link_util batadv_link_util = { + .id = "batadv", + .maxattr = IFLA_BATADV_MAX, + .parse_opt = batadv_parse_opt, + .print_help = batadv_print_help, +};