Lines Matching refs:nh
172 static inline struct rtattr *rtattr_hdr(struct nlmsghdr *nh) in rtattr_hdr() argument
174 return (struct rtattr *)((char *)(nh) + RTA_ALIGN((nh)->nlmsg_len)); in rtattr_hdr()
177 static int rtattr_pack(struct nlmsghdr *nh, size_t req_sz, in rtattr_pack() argument
181 struct rtattr *attr = rtattr_hdr(nh); in rtattr_pack()
182 size_t nl_size = RTA_ALIGN(nh->nlmsg_len) + RTA_LENGTH(size); in rtattr_pack()
188 nh->nlmsg_len = nl_size; in rtattr_pack()
197 static struct rtattr *_rtattr_begin(struct nlmsghdr *nh, size_t req_sz, in _rtattr_begin() argument
200 struct rtattr *ret = rtattr_hdr(nh); in _rtattr_begin()
202 if (rtattr_pack(nh, req_sz, rta_type, payload, size)) in _rtattr_begin()
208 static inline struct rtattr *rtattr_begin(struct nlmsghdr *nh, size_t req_sz, in rtattr_begin() argument
211 return _rtattr_begin(nh, req_sz, rta_type, 0, 0); in rtattr_begin()
214 static inline void rtattr_end(struct nlmsghdr *nh, struct rtattr *attr) in rtattr_end() argument
216 char *nlmsg_end = (char *)nh + nh->nlmsg_len; in rtattr_end()
221 static int veth_pack_peerb(struct nlmsghdr *nh, size_t req_sz, in veth_pack_peerb() argument
231 peer_attr = _rtattr_begin(nh, req_sz, VETH_INFO_PEER, &pi, sizeof(pi)); in veth_pack_peerb()
235 if (rtattr_pack(nh, req_sz, IFLA_IFNAME, peer, strlen(peer))) in veth_pack_peerb()
238 if (rtattr_pack(nh, req_sz, IFLA_NET_NS_FD, &ns, sizeof(ns))) in veth_pack_peerb()
241 rtattr_end(nh, peer_attr); in veth_pack_peerb()
274 struct nlmsghdr nh; in veth_add() member
282 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in veth_add()
283 req.nh.nlmsg_type = RTM_NEWLINK; in veth_add()
284 req.nh.nlmsg_flags = flags; in veth_add()
285 req.nh.nlmsg_seq = seq; in veth_add()
289 if (rtattr_pack(&req.nh, sizeof(req), IFLA_IFNAME, peera, strlen(peera))) in veth_add()
292 if (rtattr_pack(&req.nh, sizeof(req), IFLA_NET_NS_FD, &ns_a, sizeof(ns_a))) in veth_add()
295 link_info = rtattr_begin(&req.nh, sizeof(req), IFLA_LINKINFO); in veth_add()
299 if (rtattr_pack(&req.nh, sizeof(req), IFLA_INFO_KIND, veth_type, sizeof(veth_type))) in veth_add()
302 info_data = rtattr_begin(&req.nh, sizeof(req), IFLA_INFO_DATA); in veth_add()
306 if (veth_pack_peerb(&req.nh, sizeof(req), peerb, ns_b)) in veth_add()
309 rtattr_end(&req.nh, info_data); in veth_add()
310 rtattr_end(&req.nh, link_info); in veth_add()
312 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in veth_add()
324 struct nlmsghdr nh; in ip4_addr_set() member
330 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in ip4_addr_set()
331 req.nh.nlmsg_type = RTM_NEWADDR; in ip4_addr_set()
332 req.nh.nlmsg_flags = flags; in ip4_addr_set()
333 req.nh.nlmsg_seq = seq; in ip4_addr_set()
348 if (rtattr_pack(&req.nh, sizeof(req), IFA_LOCAL, &addr, sizeof(addr))) in ip4_addr_set()
351 if (rtattr_pack(&req.nh, sizeof(req), IFA_ADDRESS, &addr, sizeof(addr))) in ip4_addr_set()
354 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in ip4_addr_set()
364 struct nlmsghdr nh; in link_set_up() member
370 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in link_set_up()
371 req.nh.nlmsg_type = RTM_NEWLINK; in link_set_up()
372 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in link_set_up()
373 req.nh.nlmsg_seq = seq; in link_set_up()
380 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in link_set_up()
391 struct nlmsghdr nh; in ip4_route_set() member
398 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.rt)); in ip4_route_set()
399 req.nh.nlmsg_type = RTM_NEWROUTE; in ip4_route_set()
400 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_CREATE; in ip4_route_set()
401 req.nh.nlmsg_seq = seq; in ip4_route_set()
409 if (rtattr_pack(&req.nh, sizeof(req), RTA_DST, &dst, sizeof(dst))) in ip4_route_set()
412 if (rtattr_pack(&req.nh, sizeof(req), RTA_PREFSRC, &src, sizeof(src))) in ip4_route_set()
415 if (rtattr_pack(&req.nh, sizeof(req), RTA_OIF, &index, sizeof(index))) in ip4_route_set()
418 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in ip4_route_set()
838 static int xfrm_state_pack_algo(struct nlmsghdr *nh, size_t req_sz, in xfrm_state_pack_algo() argument
900 if (rtattr_pack(nh, req_sz, type, &alg, sizeof(alg))) in xfrm_state_pack_algo()
915 if (rtattr_pack(nh, req_sz, type, &alg, sizeof(alg))) in xfrm_state_pack_algo()
931 struct nlmsghdr nh; in xfrm_state_add() member
937 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in xfrm_state_add()
938 req.nh.nlmsg_type = XFRM_MSG_NEWSA; in xfrm_state_add()
939 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_state_add()
940 req.nh.nlmsg_seq = seq; in xfrm_state_add()
966 if (xfrm_state_pack_algo(&req.nh, sizeof(req), desc)) in xfrm_state_add()
969 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_add()
1020 struct nlmsghdr nh; in xfrm_state_check() member
1024 struct nlmsghdr nh; in xfrm_state_check() member
1036 req.nh.nlmsg_len = NLMSG_LENGTH(0); in xfrm_state_check()
1037 req.nh.nlmsg_type = XFRM_MSG_GETSA; in xfrm_state_check()
1038 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; in xfrm_state_check()
1039 req.nh.nlmsg_seq = seq; in xfrm_state_check()
1048 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_ADDRESS_FILTER, in xfrm_state_check()
1052 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_check()
1062 if (answer.nh.nlmsg_type == NLMSG_ERROR) { in xfrm_state_check()
1066 } else if (answer.nh.nlmsg_type == NLMSG_DONE) { in xfrm_state_check()
1071 } else if (answer.nh.nlmsg_type == XFRM_MSG_NEWSA) { in xfrm_state_check()
1113 struct nlmsghdr nh; in xfrm_policy_add() member
1121 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in xfrm_policy_add()
1122 req.nh.nlmsg_type = XFRM_MSG_NEWPOLICY; in xfrm_policy_add()
1123 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_policy_add()
1124 req.nh.nlmsg_seq = seq; in xfrm_policy_add()
1153 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_TMPL, &tmpl, sizeof(tmpl))) in xfrm_policy_add()
1156 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_policy_add()
1188 struct nlmsghdr nh; in xfrm_policy_del() member
1194 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.id)); in xfrm_policy_del()
1195 req.nh.nlmsg_type = XFRM_MSG_DELPOLICY; in xfrm_policy_del()
1196 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_policy_del()
1197 req.nh.nlmsg_seq = seq; in xfrm_policy_del()
1207 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_policy_del()
1238 struct nlmsghdr nh; in xfrm_state_del() member
1245 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.id)); in xfrm_state_del()
1246 req.nh.nlmsg_type = XFRM_MSG_DELSA; in xfrm_state_del()
1247 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_state_del()
1248 req.nh.nlmsg_seq = seq; in xfrm_state_del()
1257 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_SRCADDR, &saddr, sizeof(saddr))) in xfrm_state_del()
1260 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_del()
1289 struct nlmsghdr nh; in xfrm_state_allocspi() member
1293 struct nlmsghdr nh; in xfrm_state_allocspi() member
1301 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.spi)); in xfrm_state_allocspi()
1302 req.nh.nlmsg_type = XFRM_MSG_ALLOCSPI; in xfrm_state_allocspi()
1303 req.nh.nlmsg_flags = NLM_F_REQUEST; in xfrm_state_allocspi()
1304 req.nh.nlmsg_seq = (*seq)++; in xfrm_state_allocspi()
1311 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_allocspi()
1319 } else if (answer.nh.nlmsg_type == XFRM_MSG_NEWSA) { in xfrm_state_allocspi()
1328 } else if (answer.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_state_allocspi()
1329 printk("expected NLMSG_ERROR, got %d", (int)answer.nh.nlmsg_type); in xfrm_state_allocspi()
1379 struct nlmsghdr nh; in xfrm_monitor_acquire() member
1394 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.acq)); in xfrm_monitor_acquire()
1395 req.nh.nlmsg_type = XFRM_MSG_ACQUIRE; in xfrm_monitor_acquire()
1396 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_monitor_acquire()
1397 req.nh.nlmsg_seq = (*seq)++; in xfrm_monitor_acquire()
1406 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_TMPL, &xfrm_tmpl, sizeof(xfrm_tmpl))) in xfrm_monitor_acquire()
1409 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_monitor_acquire()
1417 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_monitor_acquire()
1418 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_monitor_acquire()
1450 struct nlmsghdr nh; in xfrm_expire_state() member
1472 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.expire)); in xfrm_expire_state()
1473 req.nh.nlmsg_type = XFRM_MSG_EXPIRE; in xfrm_expire_state()
1474 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_expire_state()
1475 req.nh.nlmsg_seq = (*seq)++; in xfrm_expire_state()
1483 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_expire_state()
1491 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_expire_state()
1492 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_expire_state()
1522 struct nlmsghdr nh; in xfrm_expire_policy() member
1547 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.expire)); in xfrm_expire_policy()
1548 req.nh.nlmsg_type = XFRM_MSG_POLEXPIRE; in xfrm_expire_policy()
1549 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_expire_policy()
1550 req.nh.nlmsg_seq = (*seq)++; in xfrm_expire_policy()
1561 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_expire_policy()
1569 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_expire_policy()
1570 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_expire_policy()