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; }
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; }
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; }
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; }
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); }
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; }
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; }
TNlAddr::TNlAddr(struct nl_addr *addr) { Addr = nl_addr_get(addr); }