mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2026-01-25 23:00:14 +00:00
ip: Use specific slave id
The original bond/bridge/vrf and slaves use same id, which make people confused. Use bond/bridge/vrf_slave as id name will make code more clear. Acked-by: Phil Sutter <psutter@redhat.com> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
This commit is contained in:
parent
77089b583a
commit
22a84711f4
@ -83,11 +83,9 @@ struct link_util {
|
||||
struct rtattr *);
|
||||
void (*print_help)(struct link_util *, int, char **,
|
||||
FILE *);
|
||||
bool slave;
|
||||
};
|
||||
|
||||
struct link_util *get_link_kind(const char *kind);
|
||||
struct link_util *get_link_slave_kind(const char *slave_kind);
|
||||
|
||||
void br_dump_bridge_id(const struct ifla_bridge_id *id, char *buf, size_t len);
|
||||
|
||||
|
||||
@ -232,6 +232,7 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
|
||||
struct rtattr *linkinfo[IFLA_INFO_MAX+1];
|
||||
struct link_util *lu;
|
||||
struct link_util *slave_lu;
|
||||
char slave[32];
|
||||
char *kind;
|
||||
char *slave_kind;
|
||||
|
||||
@ -265,8 +266,9 @@ static void print_linktype(FILE *fp, struct rtattr *tb)
|
||||
|
||||
fprintf(fp, "%s", _SL_);
|
||||
fprintf(fp, " %s_slave ", slave_kind);
|
||||
snprintf(slave, sizeof(slave), "%s_slave", slave_kind);
|
||||
|
||||
slave_lu = get_link_slave_kind(slave_kind);
|
||||
slave_lu = get_link_kind(slave);
|
||||
if (slave_lu && slave_lu->print_opt) {
|
||||
struct rtattr *attr[slave_lu->maxattr+1], **data = NULL;
|
||||
|
||||
|
||||
36
ip/iplink.c
36
ip/iplink.c
@ -119,15 +119,14 @@ static int on_off(const char *msg, const char *realval)
|
||||
static void *BODY; /* cached dlopen(NULL) handle */
|
||||
static struct link_util *linkutil_list;
|
||||
|
||||
static struct link_util *__get_link_kind(const char *id, bool slave)
|
||||
struct link_util *get_link_kind(const char *id)
|
||||
{
|
||||
void *dlh;
|
||||
char buf[256];
|
||||
struct link_util *l;
|
||||
|
||||
for (l = linkutil_list; l; l = l->next)
|
||||
if (strcmp(l->id, id) == 0 &&
|
||||
l->slave == slave)
|
||||
if (strcmp(l->id, id) == 0)
|
||||
return l;
|
||||
|
||||
snprintf(buf, sizeof(buf), LIBDIR "/ip/link_%s.so", id);
|
||||
@ -142,10 +141,7 @@ static struct link_util *__get_link_kind(const char *id, bool slave)
|
||||
}
|
||||
}
|
||||
|
||||
if (slave)
|
||||
snprintf(buf, sizeof(buf), "%s_slave_link_util", id);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "%s_link_util", id);
|
||||
snprintf(buf, sizeof(buf), "%s_link_util", id);
|
||||
l = dlsym(dlh, buf);
|
||||
if (l == NULL)
|
||||
return NULL;
|
||||
@ -155,16 +151,6 @@ static struct link_util *__get_link_kind(const char *id, bool slave)
|
||||
return l;
|
||||
}
|
||||
|
||||
struct link_util *get_link_kind(const char *id)
|
||||
{
|
||||
return __get_link_kind(id, false);
|
||||
}
|
||||
|
||||
struct link_util *get_link_slave_kind(const char *id)
|
||||
{
|
||||
return __get_link_kind(id, true);
|
||||
}
|
||||
|
||||
static int get_link_mode(const char *mode)
|
||||
{
|
||||
if (strcasecmp(mode, "default") == 0)
|
||||
@ -872,26 +858,18 @@ static int iplink_modify(int cmd, unsigned int flags, int argc, char **argv)
|
||||
|
||||
if (type) {
|
||||
struct rtattr *linkinfo;
|
||||
char slavebuf[128], *ulinep = strchr(type, '_');
|
||||
char *ulinep = strchr(type, '_');
|
||||
int iflatype;
|
||||
|
||||
linkinfo = addattr_nest(&req.n, sizeof(req), IFLA_LINKINFO);
|
||||
addattr_l(&req.n, sizeof(req), IFLA_INFO_KIND, type,
|
||||
strlen(type));
|
||||
|
||||
if (ulinep && !strcmp(ulinep, "_slave")) {
|
||||
strncpy(slavebuf, type, sizeof(slavebuf));
|
||||
slavebuf[sizeof(slavebuf) - 1] = '\0';
|
||||
ulinep = strchr(slavebuf, '_');
|
||||
/* check in case it was after sizeof(slavebuf) - 1*/
|
||||
if (ulinep)
|
||||
*ulinep = '\0';
|
||||
lu = get_link_slave_kind(slavebuf);
|
||||
lu = get_link_kind(type);
|
||||
if (ulinep && !strcmp(ulinep, "_slave"))
|
||||
iflatype = IFLA_INFO_SLAVE_DATA;
|
||||
} else {
|
||||
lu = get_link_kind(type);
|
||||
else
|
||||
iflatype = IFLA_INFO_DATA;
|
||||
}
|
||||
if (lu && argc) {
|
||||
struct rtattr *data = addattr_nest(&req.n,
|
||||
sizeof(req), iflatype);
|
||||
|
||||
@ -130,10 +130,9 @@ static void bond_slave_print_help(struct link_util *lu, int argc, char **argv,
|
||||
}
|
||||
|
||||
struct link_util bond_slave_link_util = {
|
||||
.id = "bond",
|
||||
.id = "bond_slave",
|
||||
.maxattr = IFLA_BOND_SLAVE_MAX,
|
||||
.print_opt = bond_slave_print_opt,
|
||||
.parse_opt = bond_slave_parse_opt,
|
||||
.print_help = bond_slave_print_help,
|
||||
.slave = true,
|
||||
};
|
||||
|
||||
@ -293,10 +293,9 @@ static void bridge_slave_print_help(struct link_util *lu, int argc, char **argv,
|
||||
}
|
||||
|
||||
struct link_util bridge_slave_link_util = {
|
||||
.id = "bridge",
|
||||
.id = "bridge_slave",
|
||||
.maxattr = IFLA_BRPORT_MAX,
|
||||
.print_opt = bridge_slave_print_opt,
|
||||
.parse_opt = bridge_slave_parse_opt,
|
||||
.print_help = bridge_slave_print_help,
|
||||
.slave = true,
|
||||
};
|
||||
|
||||
@ -91,10 +91,9 @@ struct link_util vrf_link_util = {
|
||||
};
|
||||
|
||||
struct link_util vrf_slave_link_util = {
|
||||
.id = "vrf",
|
||||
.id = "vrf_slave",
|
||||
.maxattr = IFLA_VRF_PORT_MAX,
|
||||
.print_opt = vrf_slave_print_opt,
|
||||
.slave = true,
|
||||
};
|
||||
|
||||
/* returns table id if name is a VRF device */
|
||||
|
||||
@ -1265,5 +1265,4 @@ struct link_util macsec_link_util = {
|
||||
.parse_opt = macsec_parse_opt,
|
||||
.print_help = macsec_print_help,
|
||||
.print_opt = macsec_print_opt,
|
||||
.slave = false,
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user