Lines Matching full:nh
60 static inline struct rtattr *rtattr_hdr(struct nlmsghdr *nh) in rtattr_hdr() argument
62 return (struct rtattr *)((char *)(nh) + RTA_ALIGN((nh)->nlmsg_len)); in rtattr_hdr()
65 static int rtattr_pack(struct nlmsghdr *nh, size_t req_sz, in rtattr_pack() argument
69 struct rtattr *attr = rtattr_hdr(nh); in rtattr_pack()
70 size_t nl_size = RTA_ALIGN(nh->nlmsg_len) + RTA_LENGTH(size); in rtattr_pack()
76 nh->nlmsg_len = nl_size; in rtattr_pack()
85 static struct rtattr *_rtattr_begin(struct nlmsghdr *nh, size_t req_sz, in _rtattr_begin() argument
88 struct rtattr *ret = rtattr_hdr(nh); in _rtattr_begin()
90 if (rtattr_pack(nh, req_sz, rta_type, payload, size)) in _rtattr_begin()
96 static inline struct rtattr *rtattr_begin(struct nlmsghdr *nh, size_t req_sz, in rtattr_begin() argument
99 return _rtattr_begin(nh, req_sz, rta_type, 0, 0); in rtattr_begin()
102 static inline void rtattr_end(struct nlmsghdr *nh, struct rtattr *attr) in rtattr_end() argument
104 char *nlmsg_end = (char *)nh + nh->nlmsg_len; in rtattr_end()
109 static int veth_pack_peerb(struct nlmsghdr *nh, size_t req_sz, in veth_pack_peerb() argument
119 peer_attr = _rtattr_begin(nh, req_sz, VETH_INFO_PEER, &pi, sizeof(pi)); in veth_pack_peerb()
123 if (rtattr_pack(nh, req_sz, IFLA_IFNAME, peer, strlen(peer))) in veth_pack_peerb()
126 if (rtattr_pack(nh, req_sz, IFLA_NET_NS_FD, &ns, sizeof(ns))) in veth_pack_peerb()
129 rtattr_end(nh, peer_attr); in veth_pack_peerb()
139 struct nlmsghdr nh; in __add_veth() member
147 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in __add_veth()
148 req.nh.nlmsg_type = RTM_NEWLINK; in __add_veth()
149 req.nh.nlmsg_flags = flags; in __add_veth()
150 req.nh.nlmsg_seq = seq; in __add_veth()
154 if (rtattr_pack(&req.nh, sizeof(req), IFLA_IFNAME, name, strlen(name))) in __add_veth()
157 if (rtattr_pack(&req.nh, sizeof(req), IFLA_NET_NS_FD, &ns_a, sizeof(ns_a))) in __add_veth()
160 link_info = rtattr_begin(&req.nh, sizeof(req), IFLA_LINKINFO); in __add_veth()
164 if (rtattr_pack(&req.nh, sizeof(req), IFLA_INFO_KIND, veth_type, sizeof(veth_type))) in __add_veth()
167 info_data = rtattr_begin(&req.nh, sizeof(req), IFLA_INFO_DATA); in __add_veth()
171 if (veth_pack_peerb(&req.nh, sizeof(req), name, ns_b)) in __add_veth()
174 rtattr_end(&req.nh, info_data); in __add_veth()
175 rtattr_end(&req.nh, link_info); in __add_veth()
177 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in __add_veth()
202 struct nlmsghdr nh; in __ip_addr_add() member
210 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in __ip_addr_add()
211 req.nh.nlmsg_type = RTM_NEWADDR; in __ip_addr_add()
212 req.nh.nlmsg_flags = flags; in __ip_addr_add()
213 req.nh.nlmsg_seq = seq; in __ip_addr_add()
219 if (rtattr_pack(&req.nh, sizeof(req), IFA_LOCAL, &addr, addr_len)) in __ip_addr_add()
222 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in __ip_addr_add()
249 struct nlmsghdr nh; in __ip_route_add() member
258 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.rt)); in __ip_route_add()
259 req.nh.nlmsg_type = RTM_NEWROUTE; in __ip_route_add()
260 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_CREATE; in __ip_route_add()
261 req.nh.nlmsg_seq = seq; in __ip_route_add()
269 if (rtattr_pack(&req.nh, sizeof(req), RTA_DST, &dst, addr_len)) in __ip_route_add()
272 if (rtattr_pack(&req.nh, sizeof(req), RTA_PREFSRC, &src, addr_len)) in __ip_route_add()
275 if (rtattr_pack(&req.nh, sizeof(req), RTA_OIF, &index, sizeof(index))) in __ip_route_add()
278 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in __ip_route_add()
311 struct nlmsghdr nh; in __link_set_up() member
317 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in __link_set_up()
318 req.nh.nlmsg_type = RTM_NEWLINK; in __link_set_up()
319 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in __link_set_up()
320 req.nh.nlmsg_seq = seq; in __link_set_up()
327 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in __link_set_up()
353 struct nlmsghdr nh; in __add_vrf() member
361 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in __add_vrf()
362 req.nh.nlmsg_type = RTM_NEWLINK; in __add_vrf()
363 req.nh.nlmsg_flags = flags; in __add_vrf()
364 req.nh.nlmsg_seq = seq; in __add_vrf()
369 if (rtattr_pack(&req.nh, sizeof(req), IFLA_IFNAME, name, strlen(name))) in __add_vrf()
373 if (rtattr_pack(&req.nh, sizeof(req), IFLA_NET_NS_FD, in __add_vrf()
377 link_info = rtattr_begin(&req.nh, sizeof(req), IFLA_LINKINFO); in __add_vrf()
381 if (rtattr_pack(&req.nh, sizeof(req), IFLA_INFO_KIND, vrf_type, sizeof(vrf_type))) in __add_vrf()
384 info_data = rtattr_begin(&req.nh, sizeof(req), IFLA_INFO_DATA); in __add_vrf()
388 if (rtattr_pack(&req.nh, sizeof(req), IFLA_VRF_TABLE, in __add_vrf()
392 rtattr_end(&req.nh, info_data); in __add_vrf()
393 rtattr_end(&req.nh, link_info); in __add_vrf()
395 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in __add_vrf()