Пример #1
0
int idiagnl_msg_set_dst(struct idiagnl_msg *msg, struct nl_addr *addr)
{
	if (msg->idiag_dst)
		nl_addr_put(msg->idiag_dst);

	nl_addr_get(addr);
	msg->idiag_dst = addr;

	return 0;
}
Пример #2
0
int idiagnl_msg_set_src(struct idiagnl_msg *msg, struct nl_addr *addr)
{
	if (msg->idiag_src)
		nl_addr_put(msg->idiag_src);

	nl_addr_get(addr);
	msg->idiag_src = addr;

	return 0;
}
Пример #3
0
static void match_first_addr(struct nl_object *obj, void *arg)
{
    static int found = 0;
    struct nl_addr **addr = (struct nl_addr **)arg;

    if (found)
        return;

    *addr = rtnl_addr_get_local((struct rtnl_addr *)obj);
    nl_addr_get(*addr); /* Found, keep reference */
    found = 1;
}
Пример #4
0
int flnl_request_set_addr(struct flnl_request *req, struct nl_addr *addr)
{
	if (addr->a_family != AF_INET)
		return -NLE_AF_NOSUPPORT;

	if (req->lr_addr)
		nl_addr_put(req->lr_addr);

	nl_addr_get(addr);
	req->lr_addr = addr;

	req->ce_mask |= REQUEST_ATTR_ADDR;

	return 0;
}
Пример #5
0
void rtnl_route_nh_set_gateway(struct rtnl_nexthop *nh, struct nl_addr *addr)
{
	struct nl_addr *old = nh->rtnh_gateway;

	if (addr) {
		nh->rtnh_gateway = nl_addr_get(addr);
		nh->ce_mask |= NH_ATTR_GATEWAY;
	} else {
		nh->ce_mask &= ~NH_ATTR_GATEWAY;
		nh->rtnh_gateway = NULL;
	}

	if (old)
		nl_addr_put(old);
}
Пример #6
0
static void match_first_nh_gw(struct nl_object *obj, void *arg)
{
    static int found = 0;
    struct rtnl_route *route = (struct rtnl_route *)obj;
    struct nl_addr **gw = (struct nl_addr **)arg;

    if (found)
        return;

    struct rtnl_nexthop *nh = rtnl_route_nexthop_n(route, 0);
    if (nh == NULL)
        return;
    *gw = rtnl_route_nh_get_gateway(nh);
    nl_addr_get(*gw); /* Found, keep reference */
    found = 1;
}
Пример #7
0
static int ct_set_addr(struct nfnl_ct *ct, struct nl_addr *addr,
		int attr, struct nl_addr ** ct_addr)
{
	if (ct->ce_mask & CT_ATTR_FAMILY) {
		if (addr->a_family != ct->ct_family)
			return -NLE_AF_MISMATCH;
	} else
		nfnl_ct_set_family(ct, addr->a_family);

	if (*ct_addr)
		nl_addr_put(*ct_addr);

	nl_addr_get(addr);
	*ct_addr = addr;
	ct->ce_mask |= attr;

	return 0;
}
Пример #8
0
TNlAddr::TNlAddr(struct nl_addr *addr) {
    Addr = nl_addr_get(addr);
}