Home | History | Annotate | Download | only in route

Lines Matching refs:nh

39 	struct rtnl_nexthop *nh;
41 nh = calloc(1, sizeof(*nh));
42 if (!nh)
45 nl_init_list_head(&nh->rtnh_list);
47 return nh;
52 struct rtnl_nexthop *nh;
54 nh = rtnl_route_nh_alloc();
55 if (!nh)
58 nh->rtnh_flags = src->rtnh_flags;
59 nh->rtnh_flag_mask = src->rtnh_flag_mask;
60 nh->rtnh_weight = src->rtnh_weight;
61 nh->rtnh_ifindex = src->rtnh_ifindex;
62 nh->ce_mask = src->ce_mask;
65 nh->rtnh_gateway = nl_addr_clone(src->rtnh_gateway);
66 if (!nh->rtnh_gateway) {
67 free(nh);
72 return nh;
75 void rtnl_route_nh_free(struct rtnl_nexthop *nh)
77 nl_addr_put(nh->rtnh_gateway);
78 free(nh);
107 static void nh_dump_line(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
116 if (nh->ce_mask & NH_ATTR_GATEWAY)
117 nl_dump(dp, " %s", nl_addr2str(nh->rtnh_gateway,
120 if(nh->ce_mask & NH_ATTR_IFINDEX) {
124 nh->rtnh_ifindex,
127 nl_dump(dp, " dev %d", nh->rtnh_ifindex);
136 static void nh_dump_details(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
145 if (nh->ce_mask & NH_ATTR_GATEWAY)
146 nl_dump(dp, " via %s", nl_addr2str(nh->rtnh_gateway,
149 if(nh->ce_mask & NH_ATTR_IFINDEX) {
153 nh->rtnh_ifindex,
156 nl_dump(dp, " dev %d", nh->rtnh_ifindex);
159 if (nh->ce_mask & NH_ATTR_WEIGHT)
160 nl_dump(dp, " weight %u", nh->rtnh_weight);
162 if (nh->ce_mask & NH_ATTR_REALMS)
164 RTNL_REALM_FROM(nh->rtnh_realms),
165 RTNL_REALM_TO(nh->rtnh_realms));
167 if (nh->ce_mask & NH_ATTR_FLAGS)
168 nl_dump(dp, " <%s>", rtnl_route_nh_flags2str(nh->rtnh_flags,
175 void rtnl_route_nh_dump(struct rtnl_nexthop *nh, struct nl_dump_params *dp)
179 nh_dump_line(nh, dp);
185 nh_dump_details(nh, dp);
198 void rtnl_route_nh_set_weight(struct rtnl_nexthop *nh, uint8_t weight)
200 nh->rtnh_weight = weight;
201 nh->ce_mask |= NH_ATTR_WEIGHT;
204 uint8_t rtnl_route_nh_get_weight(struct rtnl_nexthop *nh)
206 return nh->rtnh_weight;
209 void rtnl_route_nh_set_ifindex(struct rtnl_nexthop *nh, int ifindex)
211 nh->rtnh_ifindex = ifindex;
212 nh->ce_mask |= NH_ATTR_IFINDEX;
215 int rtnl_route_nh_get_ifindex(struct rtnl_nexthop *nh)
217 return nh->rtnh_ifindex;
221 void rtnl_route_nh_set_gateway(struct rtnl_nexthop *nh, struct nl_addr *addr)
223 struct nl_addr *old = nh->rtnh_gateway;
226 nh->rtnh_gateway = nl_addr_get(addr);
227 nh->ce_mask |= NH_ATTR_GATEWAY;
229 nh->ce_mask &= ~NH_ATTR_GATEWAY;
230 nh->rtnh_gateway = NULL;
237 struct nl_addr *rtnl_route_nh_get_gateway(struct rtnl_nexthop *nh)
239 return nh->rtnh_gateway;
242 void rtnl_route_nh_set_flags(struct rtnl_nexthop *nh, unsigned int flags)
244 nh->rtnh_flag_mask |= flags;
245 nh->rtnh_flags |= flags;
246 nh->ce_mask |= NH_ATTR_FLAGS;
249 void rtnl_route_nh_unset_flags(struct rtnl_nexthop *nh, unsigned int flags)
251 nh->rtnh_flag_mask |= flags;
252 nh->rtnh_flags &= ~flags;
253 nh->ce_mask |= NH_ATTR_FLAGS;
256 unsigned int rtnl_route_nh_get_flags(struct rtnl_nexthop *nh)
258 return nh->rtnh_flags;
261 void rtnl_route_nh_set_realms(struct rtnl_nexthop *nh, uint32_t realms)
263 nh->rtnh_realms = realms;
264 nh->ce_mask |= NH_ATTR_REALMS;
267 uint32_t rtnl_route_nh_get_realms(struct rtnl_nexthop *nh)
269 return nh->rtnh_realms;