void bridge_status(void) { struct ifreq ifr; struct ifbrparam bp1, bp2; if (!is_bridge(name)) return; strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name)); if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&ifr) < 0) return; bridge_cfg("\t"); bridge_list("\t"); if (aflag && !ifaliases) return; strlcpy(bp1.ifbrp_name, name, sizeof(bp1.ifbrp_name)); if (ioctl(s, SIOCBRDGGCACHE, (caddr_t)&bp1) < 0) return; strlcpy(bp2.ifbrp_name, name, sizeof(bp2.ifbrp_name)); if (ioctl(s, SIOCBRDGGTO, (caddr_t)&bp2) < 0) return; printf("\tAddresses (max cache: %u, timeout: %u):\n", bp1.ifbrp_csize, bp2.ifbrp_ctime); bridge_addrs("\t\t", 0); }
void conf_brcfg(FILE *output, int ifs, struct if_nameindex *ifn_list, char *ifname) { struct if_nameindex *br_ifnp; char tmp_str[TMPSIZ]; long l_tmp; if ((l_tmp = bridge_cfg(ifs, ifname, PRIORITY)) != -1 && l_tmp != DEFAULT_PRIORITY) fprintf(output, " priority %lu\n", l_tmp); if ((l_tmp = bridge_cfg(ifs, ifname, HELLOTIME)) != -1 && l_tmp != DEFAULT_HELLOTIME) fprintf(output, " hellotime %lu\n", l_tmp); if ((l_tmp = bridge_cfg(ifs, ifname, FWDDELAY)) != -1 && l_tmp != DEFAULT_FWDDELAY) fprintf(output, " fwddelay %lu\n", l_tmp); if ((l_tmp = bridge_cfg(ifs, ifname, MAXAGE)) != -1 && l_tmp != DEFAULT_MAXAGE) fprintf(output, " maxage %lu\n", l_tmp); if ((l_tmp = bridge_cfg(ifs, ifname, MAXADDR)) != -1 && l_tmp != DEFAULT_MAXADDR) fprintf(output, " maxaddr %lu\n", l_tmp); if ((l_tmp = bridge_cfg(ifs, ifname, TIMEOUT)) != -1 && l_tmp != DEFAULT_TIMEOUT) fprintf(output, " timeout %lu\n", l_tmp); if (bridge_list(ifs, ifname, NULL, tmp_str, TMPSIZ, MEMBER)) fprintf(output, " member %s\n", tmp_str); if (bridge_list(ifs, ifname, NULL, tmp_str, TMPSIZ, STP)) fprintf(output, " stp %s\n", tmp_str); if (bridge_list(ifs, ifname, NULL, tmp_str, TMPSIZ, SPAN)) fprintf(output, " span %s\n", tmp_str); if (bridge_list(ifs, ifname, NULL, tmp_str, TMPSIZ, NOLEARNING)) fprintf(output, " no learning %s\n", tmp_str); if (bridge_list(ifs, ifname, NULL, tmp_str, TMPSIZ, NODISCOVER)) fprintf(output, " no discover %s\n", tmp_str); if (bridge_list(ifs, ifname, NULL, tmp_str, TMPSIZ, BLOCKNONIP)) fprintf(output, " blocknonip %s\n", tmp_str); if (bridge_list(ifs, ifname, " ", tmp_str, TMPSIZ, CONF_IFPRIORITY)) fprintf(output, "%s", tmp_str); if (bridge_list(ifs, ifname, " ", tmp_str, TMPSIZ, CONF_IFCOST)) fprintf(output, "%s", tmp_str); bridge_confaddrs(ifs, ifname, " static ", output); for (br_ifnp = ifn_list; br_ifnp->if_name != NULL; br_ifnp++) /* try all interface names for member rules */ bridge_rules(ifs, ifname, br_ifnp->if_name, " rule ", output); }