13#include "nl-default.h"
15#include <netlink/cli/utils.h>
16#include <netlink/cli/addr.h>
18struct rtnl_addr *nl_cli_addr_alloc(
void)
20 struct rtnl_addr *addr;
22 addr = rtnl_addr_alloc();
24 nl_cli_fatal(ENOMEM,
"Unable to allocate address object");
29void nl_cli_addr_parse_family(
struct rtnl_addr *addr,
char *arg)
33 if ((family = nl_str2af(arg)) != AF_UNSPEC)
34 rtnl_addr_set_family(addr, family);
37void nl_cli_addr_parse_local(
struct rtnl_addr *addr,
char *arg)
42 a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
43 if ((err = rtnl_addr_set_local(addr, a)) < 0)
50void nl_cli_addr_parse_dev(
struct rtnl_addr *addr,
struct nl_cache *link_cache,
58 rtnl_addr_set_ifindex(addr, ival);
61void nl_cli_addr_parse_label(
struct rtnl_addr *addr,
char *arg)
65 if ((err = rtnl_addr_set_label(addr, arg)) < 0)
70void nl_cli_addr_parse_peer(
struct rtnl_addr *addr,
char *arg)
75 a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
76 if ((err = rtnl_addr_set_peer(addr, a)) < 0)
83void nl_cli_addr_parse_scope(
struct rtnl_addr *addr,
char *arg)
87 if ((ival = rtnl_str2scope(arg)) < 0)
88 nl_cli_fatal(EINVAL,
"Unknown address scope \"%s\"", arg);
90 rtnl_addr_set_scope(addr, ival);
93void nl_cli_addr_parse_broadcast(
struct rtnl_addr *addr,
char *arg)
98 a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
99 if ((err = rtnl_addr_set_broadcast(addr, a)) < 0)
100 nl_cli_fatal(err,
"Unable to set broadcast address: %s",
106static uint32_t parse_lifetime(
const char *arg)
111 if (!strcasecmp(arg,
"forever"))
114 if ((err = nl_str2msec(arg, &msecs)) < 0)
115 nl_cli_fatal(err,
"Unable to parse time string \"%s\": %s",
116 arg, nl_geterror(err));
118 return (msecs / 1000);
121void nl_cli_addr_parse_preferred(
struct rtnl_addr *addr,
char *arg)
123 rtnl_addr_set_preferred_lifetime(addr, parse_lifetime(arg));
126void nl_cli_addr_parse_valid(
struct rtnl_addr *addr,
char *arg)
128 rtnl_addr_set_valid_lifetime(addr, parse_lifetime(arg));
void nl_addr_put(struct nl_addr *addr)
Decrease the reference counter of an abstract address.
void nl_cli_fatal(int err, const char *fmt,...)
Print error message and quit application.
int rtnl_link_name2i(struct nl_cache *cache, const char *name)
Translate link name to corresponding interface index.