示例#1
0
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;
	}
}
示例#2
0
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;
	}
}
示例#4
0
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");
		}
	}
}
示例#5
0
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;
}