コード例 #1
0
ファイル: vlan.c プロジェクト: idosch/iproute2
static int vlan_show(int argc, char **argv)
{
	char *filter_dev = NULL;

	while (argc > 0) {
		if (strcmp(*argv, "dev") == 0) {
			NEXT_ARG();
			if (filter_dev)
				duparg("dev", *argv);
			filter_dev = *argv;
		} else if (strcmp(*argv, "vid") == 0) {
			NEXT_ARG();
			if (filter_vlan)
				duparg("vid", *argv);
			filter_vlan = atoi(*argv);
		}
		argc--; argv++;
	}

	if (filter_dev) {
		if ((filter_index = if_nametoindex(filter_dev)) == 0) {
			fprintf(stderr, "Cannot find device \"%s\"\n",
			       filter_dev);
			return -1;
		}
	}

	if (rtnl_wilddump_req_filter(&rth, PF_BRIDGE, RTM_GETLINK,
				    (compress_vlans ?
				    RTEXT_FILTER_BRVLAN_COMPRESSED :
				    RTEXT_FILTER_BRVLAN)) < 0) {
		perror("Cannont send dump request");
		exit(1);
	}

	if (json_output) {
		jw_global = jsonw_new(stdout);
		if (!jw_global) {
			fprintf(stderr, "Error allocation json object\n");
			exit(1);
		}
		jsonw_start_object(jw_global);
	} else {
		printf("port\tvlan ids\n");
	}

	if (rtnl_dump_filter(&rth, print_vlan, stdout) < 0) {
		fprintf(stderr, "Dump ternminated\n");
		exit(1);
	}

	if (jw_global) {
		jsonw_end_object(jw_global);
		jsonw_destroy(&jw_global);
	}

	return 0;
}
コード例 #2
0
ファイル: vlan.c プロジェクト: sivasankariit/iproute2
static int vlan_show(int argc, char **argv)
{
    char *filter_dev = NULL;

    while (argc > 0) {
        if (strcmp(*argv, "dev") == 0) {
            NEXT_ARG();
            if (filter_dev)
                duparg("dev", *argv);
            filter_dev = *argv;
        }
        argc--;
        argv++;
    }

    if (filter_dev) {
        if ((filter_index = if_nametoindex(filter_dev)) == 0) {
            fprintf(stderr, "Cannot find device \"%s\"\n",
                    filter_dev);
            return -1;
        }
    }

    if (rtnl_wilddump_req_filter(&rth, PF_BRIDGE, RTM_GETLINK,
                                 RTEXT_FILTER_BRVLAN) < 0) {
        perror("Cannont send dump request");
        exit(1);
    }

    printf("port\tvlan ids\n");
    if (rtnl_dump_filter(&rth, print_vlan, stdout) < 0) {
        fprintf(stderr, "Dump ternminated\n");
        exit(1);
    }

    return 0;
}
コード例 #3
0
ファイル: libnetlink.c プロジェクト: Distrotech/iproute2
int rtnl_wilddump_request(struct rtnl_handle *rth, int family, int type)
{
	return rtnl_wilddump_req_filter(rth, family, type, RTEXT_FILTER_VF);
}