static void bridge_status(int s) { struct ifbropreq ifbp; struct ifbrparam param; u_int16_t pri; u_int8_t ht, fd, ma, hc, pro; u_int8_t lladdr[ETHER_ADDR_LEN]; u_int16_t bprio; u_int32_t csize, ctime; if (do_cmd(s, BRDGGCACHE, ¶m, sizeof(param), 0) < 0) return; csize = param.ifbrp_csize; if (do_cmd(s, BRDGGTO, ¶m, sizeof(param), 0) < 0) return; ctime = param.ifbrp_ctime; if (do_cmd(s, BRDGPARAM, &ifbp, sizeof(ifbp), 0) < 0) return; pri = ifbp.ifbop_priority; pro = ifbp.ifbop_protocol; ht = ifbp.ifbop_hellotime; fd = ifbp.ifbop_fwddelay; hc = ifbp.ifbop_holdcount; ma = ifbp.ifbop_maxage; PV2ID(ifbp.ifbop_bridgeid, bprio, lladdr); printf("\tid %s priority %u hellotime %u fwddelay %u\n", ether_ntoa((struct ether_addr *)lladdr), pri, ht, fd); printf("\tmaxage %u holdcnt %u proto %s maxaddr %u timeout %u\n", ma, hc, stpproto[pro], csize, ctime); PV2ID(ifbp.ifbop_designated_root, bprio, lladdr); printf("\troot id %s priority %d ifcost %u port %u\n", ether_ntoa((struct ether_addr *)lladdr), bprio, ifbp.ifbop_root_path_cost, ifbp.ifbop_root_port & 0xfff); bridge_interfaces(s, "\tmember: "); return; }
void bridge_cfg(const char *delim) { struct ifbropreq ifbp; u_int16_t pri; u_int8_t ht, fd, ma, hc, proto; u_int8_t lladdr[ETHER_ADDR_LEN]; u_int16_t bprio; strlcpy(ifbp.ifbop_name, name, sizeof(ifbp.ifbop_name)); if (ioctl(s, SIOCBRDGGPARAM, (caddr_t)&ifbp)) err(1, "%s", name); printf("%s", delim); pri = ifbp.ifbop_priority; ht = ifbp.ifbop_hellotime; fd = ifbp.ifbop_fwddelay; ma = ifbp.ifbop_maxage; hc = ifbp.ifbop_holdcount; proto = ifbp.ifbop_protocol; printf("priority %u hellotime %u fwddelay %u maxage %u " "holdcnt %u proto %s\n", pri, ht, fd, ma, hc, stpproto[proto]); if (aflag) return; PV2ID(ifbp.ifbop_desg_bridge, bprio, lladdr); printf("\tdesignated: id %s priority %u\n", ether_ntoa((struct ether_addr *)lladdr), bprio); if (ifbp.ifbop_root_bridge == ifbp.ifbop_desg_bridge) return; PV2ID(ifbp.ifbop_root_bridge, bprio, lladdr); printf("\troot: id %s priority %u ifcost %u port %u\n", ether_ntoa((struct ether_addr *)lladdr), bprio, ifbp.ifbop_root_path_cost, ifbp.ifbop_root_port & 0xfff); }