20 #include <netlink/cli/utils.h> 21 #include <netlink/cli/addr.h> 23 struct rtnl_addr *nl_cli_addr_alloc(
void)
25 struct rtnl_addr *addr;
27 addr = rtnl_addr_alloc();
29 nl_cli_fatal(ENOMEM,
"Unable to allocate address object");
34 void nl_cli_addr_parse_family(
struct rtnl_addr *addr,
char *arg)
38 if ((family = nl_str2af(arg)) != AF_UNSPEC)
39 rtnl_addr_set_family(addr, family);
42 void nl_cli_addr_parse_local(
struct rtnl_addr *addr,
char *arg)
47 a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
48 if ((err = rtnl_addr_set_local(addr, a)) < 0)
55 void nl_cli_addr_parse_dev(
struct rtnl_addr *addr,
struct nl_cache *link_cache,
63 rtnl_addr_set_ifindex(addr, ival);
66 void nl_cli_addr_parse_label(
struct rtnl_addr *addr,
char *arg)
70 if ((err = rtnl_addr_set_label(addr, arg)) < 0)
75 void nl_cli_addr_parse_peer(
struct rtnl_addr *addr,
char *arg)
80 a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
81 if ((err = rtnl_addr_set_peer(addr, a)) < 0)
88 void nl_cli_addr_parse_scope(
struct rtnl_addr *addr,
char *arg)
92 if ((ival = rtnl_str2scope(arg)) < 0)
93 nl_cli_fatal(EINVAL,
"Unknown address scope \"%s\"", arg);
95 rtnl_addr_set_scope(addr, ival);
98 void nl_cli_addr_parse_broadcast(
struct rtnl_addr *addr,
char *arg)
103 a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
104 if ((err = rtnl_addr_set_broadcast(addr, a)) < 0)
105 nl_cli_fatal(err,
"Unable to set broadcast address: %s",
111 static uint32_t parse_lifetime(
const char *arg)
116 if (!strcasecmp(arg,
"forever"))
119 if ((err = nl_str2msec(arg, &msecs)) < 0)
120 nl_cli_fatal(err,
"Unable to parse time string \"%s\": %s",
121 arg, nl_geterror(err));
123 return (msecs / 1000);
126 void nl_cli_addr_parse_preferred(
struct rtnl_addr *addr,
char *arg)
128 rtnl_addr_set_preferred_lifetime(addr, parse_lifetime(arg));
131 void nl_cli_addr_parse_valid(
struct rtnl_addr *addr,
char *arg)
133 rtnl_addr_set_valid_lifetime(addr, parse_lifetime(arg));
void nl_cli_fatal(int err, const char *fmt,...)
Print error message and quit application.
void nl_addr_put(struct nl_addr *addr)
Decrease the reference counter of an abstract address.
int rtnl_link_name2i(struct nl_cache *cache, const char *name)
Translate link name to corresponding interface index.