Lines Matching full:nh
210 static inline struct rtattr *rtattr_hdr(struct nlmsghdr *nh) in rtattr_hdr() argument
212 return (struct rtattr *)((char *)(nh) + RTA_ALIGN((nh)->nlmsg_len)); in rtattr_hdr()
215 static int rtattr_pack(struct nlmsghdr *nh, size_t req_sz, in rtattr_pack() argument
219 struct rtattr *attr = rtattr_hdr(nh); in rtattr_pack()
220 size_t nl_size = RTA_ALIGN(nh->nlmsg_len) + RTA_LENGTH(size); in rtattr_pack()
226 nh->nlmsg_len = nl_size; in rtattr_pack()
236 static struct rtattr *_rtattr_begin(struct nlmsghdr *nh, size_t req_sz, in _rtattr_begin() argument
239 struct rtattr *ret = rtattr_hdr(nh); in _rtattr_begin()
241 if (rtattr_pack(nh, req_sz, rta_type, payload, size)) in _rtattr_begin()
247 static inline struct rtattr *rtattr_begin(struct nlmsghdr *nh, size_t req_sz, in rtattr_begin() argument
250 return _rtattr_begin(nh, req_sz, rta_type, 0, 0); in rtattr_begin()
253 static inline void rtattr_end(struct nlmsghdr *nh, struct rtattr *attr) in rtattr_end() argument
255 char *nlmsg_end = (char *)nh + nh->nlmsg_len; in rtattr_end()
260 static int veth_pack_peerb(struct nlmsghdr *nh, size_t req_sz, in veth_pack_peerb() argument
270 peer_attr = _rtattr_begin(nh, req_sz, VETH_INFO_PEER, &pi, sizeof(pi)); in veth_pack_peerb()
274 if (rtattr_pack(nh, req_sz, IFLA_IFNAME, peer, strlen(peer))) in veth_pack_peerb()
277 if (rtattr_pack(nh, req_sz, IFLA_NET_NS_FD, &ns, sizeof(ns))) in veth_pack_peerb()
280 rtattr_end(nh, peer_attr); in veth_pack_peerb()
313 struct nlmsghdr nh; in veth_add() member
321 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in veth_add()
322 req.nh.nlmsg_type = RTM_NEWLINK; in veth_add()
323 req.nh.nlmsg_flags = flags; in veth_add()
324 req.nh.nlmsg_seq = seq; in veth_add()
328 if (rtattr_pack(&req.nh, sizeof(req), IFLA_IFNAME, peera, strlen(peera))) in veth_add()
331 if (rtattr_pack(&req.nh, sizeof(req), IFLA_NET_NS_FD, &ns_a, sizeof(ns_a))) in veth_add()
334 link_info = rtattr_begin(&req.nh, sizeof(req), IFLA_LINKINFO); in veth_add()
338 if (rtattr_pack(&req.nh, sizeof(req), IFLA_INFO_KIND, veth_type, sizeof(veth_type))) in veth_add()
341 info_data = rtattr_begin(&req.nh, sizeof(req), IFLA_INFO_DATA); in veth_add()
345 if (veth_pack_peerb(&req.nh, sizeof(req), peerb, ns_b)) in veth_add()
348 rtattr_end(&req.nh, info_data); in veth_add()
349 rtattr_end(&req.nh, link_info); in veth_add()
351 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in veth_add()
363 struct nlmsghdr nh; in ip4_addr_set() member
369 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in ip4_addr_set()
370 req.nh.nlmsg_type = RTM_NEWADDR; in ip4_addr_set()
371 req.nh.nlmsg_flags = flags; in ip4_addr_set()
372 req.nh.nlmsg_seq = seq; in ip4_addr_set()
387 if (rtattr_pack(&req.nh, sizeof(req), IFA_LOCAL, &addr, sizeof(addr))) in ip4_addr_set()
390 if (rtattr_pack(&req.nh, sizeof(req), IFA_ADDRESS, &addr, sizeof(addr))) in ip4_addr_set()
393 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in ip4_addr_set()
403 struct nlmsghdr nh; in link_set_up() member
409 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in link_set_up()
410 req.nh.nlmsg_type = RTM_NEWLINK; in link_set_up()
411 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in link_set_up()
412 req.nh.nlmsg_seq = seq; in link_set_up()
419 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in link_set_up()
430 struct nlmsghdr nh; in ip4_route_set() member
437 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.rt)); in ip4_route_set()
438 req.nh.nlmsg_type = RTM_NEWROUTE; in ip4_route_set()
439 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_CREATE; in ip4_route_set()
440 req.nh.nlmsg_seq = seq; in ip4_route_set()
448 if (rtattr_pack(&req.nh, sizeof(req), RTA_DST, &dst, sizeof(dst))) in ip4_route_set()
451 if (rtattr_pack(&req.nh, sizeof(req), RTA_PREFSRC, &src, sizeof(src))) in ip4_route_set()
454 if (rtattr_pack(&req.nh, sizeof(req), RTA_OIF, &index, sizeof(index))) in ip4_route_set()
457 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) { in ip4_route_set()
827 static int xfrm_state_pack_algo(struct nlmsghdr *nh, size_t req_sz, in xfrm_state_pack_algo() argument
889 if (rtattr_pack(nh, req_sz, type, &alg, sizeof(alg))) in xfrm_state_pack_algo()
904 if (rtattr_pack(nh, req_sz, type, &alg, sizeof(alg))) in xfrm_state_pack_algo()
920 struct nlmsghdr nh; in xfrm_state_add() member
926 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in xfrm_state_add()
927 req.nh.nlmsg_type = XFRM_MSG_NEWSA; in xfrm_state_add()
928 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_state_add()
929 req.nh.nlmsg_seq = seq; in xfrm_state_add()
955 if (xfrm_state_pack_algo(&req.nh, sizeof(req), desc)) in xfrm_state_add()
958 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_add()
1009 struct nlmsghdr nh; in xfrm_state_check() member
1013 struct nlmsghdr nh; in xfrm_state_check() member
1025 req.nh.nlmsg_len = NLMSG_LENGTH(0); in xfrm_state_check()
1026 req.nh.nlmsg_type = XFRM_MSG_GETSA; in xfrm_state_check()
1027 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; in xfrm_state_check()
1028 req.nh.nlmsg_seq = seq; in xfrm_state_check()
1037 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_ADDRESS_FILTER, in xfrm_state_check()
1041 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_check()
1051 if (answer.nh.nlmsg_type == NLMSG_ERROR) { in xfrm_state_check()
1055 } else if (answer.nh.nlmsg_type == NLMSG_DONE) { in xfrm_state_check()
1060 } else if (answer.nh.nlmsg_type == XFRM_MSG_NEWSA) { in xfrm_state_check()
1102 struct nlmsghdr nh; in xfrm_policy_add() member
1110 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info)); in xfrm_policy_add()
1111 req.nh.nlmsg_type = XFRM_MSG_NEWPOLICY; in xfrm_policy_add()
1112 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_policy_add()
1113 req.nh.nlmsg_seq = seq; in xfrm_policy_add()
1142 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_TMPL, &tmpl, sizeof(tmpl))) in xfrm_policy_add()
1145 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_policy_add()
1177 struct nlmsghdr nh; in xfrm_policy_del() member
1183 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.id)); in xfrm_policy_del()
1184 req.nh.nlmsg_type = XFRM_MSG_DELPOLICY; in xfrm_policy_del()
1185 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_policy_del()
1186 req.nh.nlmsg_seq = seq; in xfrm_policy_del()
1196 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_policy_del()
1227 struct nlmsghdr nh; in xfrm_state_del() member
1234 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.id)); in xfrm_state_del()
1235 req.nh.nlmsg_type = XFRM_MSG_DELSA; in xfrm_state_del()
1236 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_state_del()
1237 req.nh.nlmsg_seq = seq; in xfrm_state_del()
1246 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_SRCADDR, &saddr, sizeof(saddr))) in xfrm_state_del()
1249 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_del()
1278 struct nlmsghdr nh; in xfrm_state_allocspi() member
1282 struct nlmsghdr nh; in xfrm_state_allocspi() member
1290 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.spi)); in xfrm_state_allocspi()
1291 req.nh.nlmsg_type = XFRM_MSG_ALLOCSPI; in xfrm_state_allocspi()
1292 req.nh.nlmsg_flags = NLM_F_REQUEST; in xfrm_state_allocspi()
1293 req.nh.nlmsg_seq = (*seq)++; in xfrm_state_allocspi()
1300 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_state_allocspi()
1308 } else if (answer.nh.nlmsg_type == XFRM_MSG_NEWSA) { in xfrm_state_allocspi()
1317 } else if (answer.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_state_allocspi()
1318 printk("expected NLMSG_ERROR, got %d", (int)answer.nh.nlmsg_type); in xfrm_state_allocspi()
1368 struct nlmsghdr nh; in xfrm_monitor_acquire() member
1383 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.acq)); in xfrm_monitor_acquire()
1384 req.nh.nlmsg_type = XFRM_MSG_ACQUIRE; in xfrm_monitor_acquire()
1385 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_monitor_acquire()
1386 req.nh.nlmsg_seq = (*seq)++; in xfrm_monitor_acquire()
1395 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_TMPL, &xfrm_tmpl, sizeof(xfrm_tmpl))) in xfrm_monitor_acquire()
1398 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_monitor_acquire()
1406 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_monitor_acquire()
1407 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_monitor_acquire()
1439 struct nlmsghdr nh; in xfrm_expire_state() member
1461 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.expire)); in xfrm_expire_state()
1462 req.nh.nlmsg_type = XFRM_MSG_EXPIRE; in xfrm_expire_state()
1463 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_expire_state()
1464 req.nh.nlmsg_seq = (*seq)++; in xfrm_expire_state()
1472 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_expire_state()
1480 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_expire_state()
1481 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_expire_state()
1511 struct nlmsghdr nh; in xfrm_expire_policy() member
1536 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.expire)); in xfrm_expire_policy()
1537 req.nh.nlmsg_type = XFRM_MSG_POLEXPIRE; in xfrm_expire_policy()
1538 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_expire_policy()
1539 req.nh.nlmsg_seq = (*seq)++; in xfrm_expire_policy()
1550 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_expire_policy()
1558 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_expire_policy()
1559 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_expire_policy()
1592 struct nlmsghdr nh; in xfrm_spdinfo_set_thresh() member
1602 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.unused)); in xfrm_spdinfo_set_thresh()
1603 req.nh.nlmsg_type = XFRM_MSG_NEWSPDINFO; in xfrm_spdinfo_set_thresh()
1604 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; in xfrm_spdinfo_set_thresh()
1605 req.nh.nlmsg_seq = (*seq)++; in xfrm_spdinfo_set_thresh()
1609 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_SPD_IPV4_HTHRESH, &thresh, sizeof(thresh))) in xfrm_spdinfo_set_thresh()
1614 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_SPD_IPV6_HTHRESH, &thresh, sizeof(thresh))) in xfrm_spdinfo_set_thresh()
1619 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_IF_ID, NULL, 0)) { in xfrm_spdinfo_set_thresh()
1625 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_spdinfo_set_thresh()
1633 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_spdinfo_set_thresh()
1634 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_spdinfo_set_thresh()
1649 struct nlmsghdr nh; in xfrm_spdinfo_attrs() member
1664 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.unused)); in xfrm_spdinfo_attrs()
1665 req.nh.nlmsg_type = XFRM_MSG_GETSPDINFO; in xfrm_spdinfo_attrs()
1666 req.nh.nlmsg_flags = NLM_F_REQUEST; in xfrm_spdinfo_attrs()
1667 req.nh.nlmsg_seq = (*seq)++; in xfrm_spdinfo_attrs()
1668 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) { in xfrm_spdinfo_attrs()
1676 } else if (req.nh.nlmsg_type == XFRM_MSG_NEWSPDINFO) { in xfrm_spdinfo_attrs()
1677 size_t len = NLMSG_PAYLOAD(&req.nh, sizeof(req.unused)); in xfrm_spdinfo_attrs()
1707 } else if (req.nh.nlmsg_type != NLMSG_ERROR) { in xfrm_spdinfo_attrs()
1708 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type); in xfrm_spdinfo_attrs()