Changeset View
Changeset View
Standalone View
Standalone View
sbin/ifconfig/iflagg.c
Show First 20 Lines • Show All 72 Lines • ▼ Show 20 Lines | if (ioctl(s, SIOCSLAGGDELPORT, &rp)) | ||||
err(1, "SIOCSLAGGDELPORT"); | err(1, "SIOCSLAGGDELPORT"); | ||||
} | } | ||||
static void | static void | ||||
setlaggproto(const char *val, int d, int s, const struct afswtch *afp) | setlaggproto(const char *val, int d, int s, const struct afswtch *afp) | ||||
{ | { | ||||
struct lagg_protos lpr[] = LAGG_PROTOS; | struct lagg_protos lpr[] = LAGG_PROTOS; | ||||
struct lagg_reqall ra; | struct lagg_reqall ra; | ||||
int i; | |||||
bzero(&ra, sizeof(ra)); | bzero(&ra, sizeof(ra)); | ||||
ra.ra_proto = LAGG_PROTO_MAX; | ra.ra_proto = LAGG_PROTO_MAX; | ||||
for (i = 0; i < nitems(lpr); i++) { | for (size_t i = 0; i < nitems(lpr); i++) { | ||||
if (strcmp(val, lpr[i].lpr_name) == 0) { | if (strcmp(val, lpr[i].lpr_name) == 0) { | ||||
ra.ra_proto = lpr[i].lpr_proto; | ra.ra_proto = lpr[i].lpr_proto; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
if (ra.ra_proto == LAGG_PROTO_MAX) | if (ra.ra_proto == LAGG_PROTO_MAX) | ||||
errx(1, "Invalid aggregation protocol: %s", val); | errx(1, "Invalid aggregation protocol: %s", val); | ||||
▲ Show 20 Lines • Show All 179 Lines • ▼ Show 20 Lines | if (verbose) { | ||||
printf("\t\tflapping: %u\n", ro->ro_flapping); | printf("\t\tflapping: %u\n", ro->ro_flapping); | ||||
if (ra->ra_proto == LAGG_PROTO_LACP) { | if (ra->ra_proto == LAGG_PROTO_LACP) { | ||||
lp = &ra->ra_lacpreq; | lp = &ra->ra_lacpreq; | ||||
printf("\tlag id: %s\n", | printf("\tlag id: %s\n", | ||||
lacp_format_peer(lp, "\n\t\t ")); | lacp_format_peer(lp, "\n\t\t ")); | ||||
} | } | ||||
} | } | ||||
for (size_t i = 0; i < ra->ra_ports; ++i) { | for (size_t i = 0; i < (size_t)ra->ra_ports; ++i) { | ||||
lp = &ports[i].rp_lacpreq; | lp = &ports[i].rp_lacpreq; | ||||
printf("\tlaggport: %s ", ports[i].rp_portname); | printf("\tlaggport: %s ", ports[i].rp_portname); | ||||
printb("flags", ports[i].rp_flags, LAGG_PORT_BITS); | printb("flags", ports[i].rp_flags, LAGG_PORT_BITS); | ||||
if (verbose && ra->ra_proto == LAGG_PROTO_LACP) | if (verbose && ra->ra_proto == LAGG_PROTO_LACP) | ||||
printb(" state", lp->actor_state, LACP_STATE_BITS); | printb(" state", lp->actor_state, LACP_STATE_BITS); | ||||
putchar('\n'); | putchar('\n'); | ||||
if (verbose && ra->ra_proto == LAGG_PROTO_LACP) | if (verbose && ra->ra_proto == LAGG_PROTO_LACP) | ||||
printf("\t\t%s\n", | printf("\t\t%s\n", | ||||
lacp_format_peer(lp, "\n\t\t ")); | lacp_format_peer(lp, "\n\t\t ")); | ||||
} | } | ||||
ifconfig_lagg_free_lagg_status(lagg); | ifconfig_lagg_free_lagg_status(lagg); | ||||
} | } | ||||
static | static | ||||
DECL_CMD_FUNC(setlaggtype, arg, d) | DECL_CMD_FUNC(setlaggtype, arg, d) | ||||
{ | { | ||||
static const struct lagg_types lt[] = LAGG_TYPES; | static const struct lagg_types lt[] = LAGG_TYPES; | ||||
int i; | |||||
for (i = 0; i < nitems(lt); i++) { | for (size_t i = 0; i < nitems(lt); i++) { | ||||
if (strcmp(arg, lt[i].lt_name) == 0) { | if (strcmp(arg, lt[i].lt_name) == 0) { | ||||
params.lagg_type = lt[i].lt_value; | params.lagg_type = lt[i].lt_value; | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
errx(1, "invalid lagg type: %s", arg); | errx(1, "invalid lagg type: %s", arg); | ||||
} | } | ||||
Show All 29 Lines | static struct afswtch af_lagg = { | ||||
.af_name = "af_lagg", | .af_name = "af_lagg", | ||||
.af_af = AF_UNSPEC, | .af_af = AF_UNSPEC, | ||||
.af_other_status = lagg_status, | .af_other_status = lagg_status, | ||||
}; | }; | ||||
static __constructor void | static __constructor void | ||||
lagg_ctor(void) | lagg_ctor(void) | ||||
{ | { | ||||
int i; | for (size_t i = 0; i < nitems(lagg_cmds); i++) | ||||
for (i = 0; i < nitems(lagg_cmds); i++) | |||||
cmd_register(&lagg_cmds[i]); | cmd_register(&lagg_cmds[i]); | ||||
af_register(&af_lagg); | af_register(&af_lagg); | ||||
clone_setdefcallback_prefix("lagg", lagg_create); | clone_setdefcallback_prefix("lagg", lagg_create); | ||||
} | } |