Beispiel #1
0
static int proc_do_init(void)
{
	if (attr_map_load(link_attrs, ARRAY_SIZE(link_attrs)) ||
	    !(grp = group_lookup(c_group, GROUP_CREATE)))
		BUG();

	return 0;
}
Beispiel #2
0
static int netlink_do_init(void)
{
	int err;

	if (!(sock = nl_socket_alloc())) {
		fprintf(stderr, "Unable to allocate netlink socket\n");
		goto disable;
	}

	if ((err = nl_connect(sock, NETLINK_ROUTE)) < 0) {
		fprintf(stderr, "Unable to connect netlink socket: %s\n", nl_geterror(err));
		goto disable;
	}

	if ((err = rtnl_link_alloc_cache(sock, AF_UNSPEC, &link_cache)) < 0) {
		fprintf(stderr, "Unable to allocate link cache: %s\n", nl_geterror(err));
		goto disable;
	}

	if ((err = rtnl_qdisc_alloc_cache(sock, &qdisc_cache)) < 0) {
		fprintf(stderr, "Warning: Unable to allocate qdisc cache: %s\n", nl_geterror(err));
		fprintf(stderr, "Disabling QoS statistics.\n");
		qdisc_cache = NULL;
	}

	netlink_use_bit(link_attrs, ARRAY_SIZE(link_attrs));
	netlink_use_bit(tc_attrs, ARRAY_SIZE(tc_attrs));
	if (attr_map_load(link_attrs, ARRAY_SIZE(link_attrs)) ||
	    attr_map_load(tc_attrs, ARRAY_SIZE(tc_attrs)))
		BUG();

	if (!(grp = group_lookup(DEFAULT_GROUP, GROUP_CREATE)))
		BUG();

	return 0;

disable:
	return -EOPNOTSUPP;
}