void br_cmd_addif(struct bridge *br, char *ifname, char *arg1) { int err; int ifindex; ifindex = if_nametoindex(ifname); if (!ifindex) { fprintf(stderr, "interface %s does not exist!\n", ifname); return; } if ((err = br_add_interface(br, ifindex)) == 0) return; switch (err) { case EBUSY: fprintf(stderr, "device %s is already a member of a bridge; " "can't enslave it to bridge %s.\n", ifname, br->ifname); break; case ELOOP: fprintf(stderr, "device %s is a bridge device itself; " "can't enslave a bridge device to a bridge device.\n", ifname); break; default: perror("br_add_interface"); break; } }
int brctl_main(int argc, char **argv) { if (argc == 1) { fprintf(stderr, "try to be professional!\n"); return -1; } br_init(); if (!strcmp(argv[1], "addif")) { if (ifexists(argv[3])) br_add_interface(argv[2], argv[3]); } if (!strcmp(argv[1], "delif")) { if (ifexists(argv[3])) br_del_interface(argv[2], argv[3]); } if (!strcmp(argv[1], "addbr")) { br_add_bridge(argv[2]); } if (!strcmp(argv[1], "stp")) { br_set_stp_state(argv[2], atoi(argv[3])); } if (!strcmp(argv[1], "delbr")) { if (!ifexists(argv[2])) return -1; br_del_bridge(argv[2]); } if (!strcmp(argv[1], "show")) { br_cmd_show(); } br_shutdown(); }
static int br_cmd_addif(char** argv) { int err; switch (err = br_add_interface(argv[1], argv[2])) { case 0: return 0; case ENODEV: fprintf(stderr, "interface %s does not exist!\n", argv[2]); return 1; case EBUSY: fprintf(stderr, "device %s is already a member of a bridge; " "can't enslave it to bridge %s.\n", argv[2], argv[1]); return 1; case ELOOP: fprintf(stderr, "device %s is a bridge device itself; " "can't enslave a bridge device to a bridge device.\n", argv[2]); return 1; default: fprintf(stderr, "can't add %s to bridge %s: %s\n", argv[2], argv[1], strerror(err)); return 1; } }
void configure_wimax(void) { char *mode = "0"; char *dev = "ofdm"; if (nvram_match("ofdm_duplex", "TDD")) mode = "0"; if (nvram_match("ofdm_duplex", "H-FDD")) mode = "1"; if (nvram_match("ofdm_mode", "disabled")) return; char width[32]; sprintf(width, "%smhz", nvram_safe_get("ofdm_width")); eval("/sub/lm_scripts/go_ss", width, "0", mode); if (!nvram_match("ofdm_mode", "sta")) { char bridged[32]; sprintf(bridged, "%s_bridged", dev); if (nvram_default_match(bridged, "1", "1")) { eval("ifconfig", dev, "0.0.0.0", "up"); br_add_interface(getBridge(dev), dev); eval("ifconfig", dev, "0.0.0.0", "up"); } else { eval("ifconfig", dev, nvram_nget("%s_ipaddr", dev), "netmask", nvram_nget("%s_netmask", dev), "up"); } } else { char bridged[32]; sprintf(bridged, "%s_bridged", dev); if (nvram_default_match(bridged, "0", "1")) { eval("ifconfig", dev, nvram_nget("%s_ipaddr", dev), "netmask", nvram_nget("%s_netmask", dev), "up"); } } }
static int br_cmd_addif(int argc, char *const* argv) { const char *brname; int err; argc -= 2; brname = *++argv; while (argc-- > 0) { const char *ifname = *++argv; err = br_add_interface(brname, ifname); switch(err) { case 0: continue; case ENODEV: if (if_nametoindex(ifname) == 0) fprintf(stderr, "interface %s does not exist!\n", ifname); else fprintf(stderr, "bridge %s does not exist!\n", brname); break; case EBUSY: fprintf(stderr, "device %s is already a member of a bridge; " "can't enslave it to bridge %s.\n", ifname, brname); break; case ELOOP: fprintf(stderr, "device %s is a bridge device itself; " "can't enslave a bridge device to a bridge device.\n", ifname); break; default: fprintf(stderr, "can't add %s to bridge %s: %s\n", ifname, brname, strerror(err)); } return 1; } return 0; }