Lines Matching defs:nh
211 static inline struct rtattr *rtattr_hdr(struct nlmsghdr *nh)
213 return (struct rtattr *)((char *)(nh) + RTA_ALIGN((nh)->nlmsg_len));
216 static int rtattr_pack(struct nlmsghdr *nh, size_t req_sz,
220 struct rtattr *attr = rtattr_hdr(nh);
221 size_t nl_size = RTA_ALIGN(nh->nlmsg_len) + RTA_LENGTH(size);
227 nh->nlmsg_len = nl_size;
237 static struct rtattr *_rtattr_begin(struct nlmsghdr *nh, size_t req_sz,
240 struct rtattr *ret = rtattr_hdr(nh);
242 if (rtattr_pack(nh, req_sz, rta_type, payload, size))
248 static inline struct rtattr *rtattr_begin(struct nlmsghdr *nh, size_t req_sz,
251 return _rtattr_begin(nh, req_sz, rta_type, 0, 0);
254 static inline void rtattr_end(struct nlmsghdr *nh, struct rtattr *attr)
256 char *nlmsg_end = (char *)nh + nh->nlmsg_len;
261 static int veth_pack_peerb(struct nlmsghdr *nh, size_t req_sz,
271 peer_attr = _rtattr_begin(nh, req_sz, VETH_INFO_PEER, &pi, sizeof(pi));
275 if (rtattr_pack(nh, req_sz, IFLA_IFNAME, peer, strlen(peer)))
278 if (rtattr_pack(nh, req_sz, IFLA_NET_NS_FD, &ns, sizeof(ns)))
281 rtattr_end(nh, peer_attr);
314 struct nlmsghdr nh;
322 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info));
323 req.nh.nlmsg_type = RTM_NEWLINK;
324 req.nh.nlmsg_flags = flags;
325 req.nh.nlmsg_seq = seq;
329 if (rtattr_pack(&req.nh, sizeof(req), IFLA_IFNAME, peera, strlen(peera)))
332 if (rtattr_pack(&req.nh, sizeof(req), IFLA_NET_NS_FD, &ns_a, sizeof(ns_a)))
335 link_info = rtattr_begin(&req.nh, sizeof(req), IFLA_LINKINFO);
339 if (rtattr_pack(&req.nh, sizeof(req), IFLA_INFO_KIND, veth_type, sizeof(veth_type)))
342 info_data = rtattr_begin(&req.nh, sizeof(req), IFLA_INFO_DATA);
346 if (veth_pack_peerb(&req.nh, sizeof(req), peerb, ns_b))
349 rtattr_end(&req.nh, info_data);
350 rtattr_end(&req.nh, link_info);
352 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) {
364 struct nlmsghdr nh;
370 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info));
371 req.nh.nlmsg_type = RTM_NEWADDR;
372 req.nh.nlmsg_flags = flags;
373 req.nh.nlmsg_seq = seq;
388 if (rtattr_pack(&req.nh, sizeof(req), IFA_LOCAL, &addr, sizeof(addr)))
391 if (rtattr_pack(&req.nh, sizeof(req), IFA_ADDRESS, &addr, sizeof(addr)))
394 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) {
404 struct nlmsghdr nh;
410 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info));
411 req.nh.nlmsg_type = RTM_NEWLINK;
412 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
413 req.nh.nlmsg_seq = seq;
420 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) {
431 struct nlmsghdr nh;
438 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.rt));
439 req.nh.nlmsg_type = RTM_NEWROUTE;
440 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK | NLM_F_CREATE;
441 req.nh.nlmsg_seq = seq;
449 if (rtattr_pack(&req.nh, sizeof(req), RTA_DST, &dst, sizeof(dst)))
452 if (rtattr_pack(&req.nh, sizeof(req), RTA_PREFSRC, &src, sizeof(src)))
455 if (rtattr_pack(&req.nh, sizeof(req), RTA_OIF, &index, sizeof(index)))
458 if (send(sock, &req, req.nh.nlmsg_len, 0) < 0) {
828 static int xfrm_state_pack_algo(struct nlmsghdr *nh, size_t req_sz,
893 if (rtattr_pack(nh, req_sz, type, &alg, sizeof(alg)))
908 if (rtattr_pack(nh, req_sz, type, &alg, sizeof(alg)))
924 struct nlmsghdr nh;
930 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info));
931 req.nh.nlmsg_type = XFRM_MSG_NEWSA;
932 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
933 req.nh.nlmsg_seq = seq;
959 if (xfrm_state_pack_algo(&req.nh, sizeof(req), desc))
962 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1013 struct nlmsghdr nh;
1017 struct nlmsghdr nh;
1029 req.nh.nlmsg_len = NLMSG_LENGTH(0);
1030 req.nh.nlmsg_type = XFRM_MSG_GETSA;
1031 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
1032 req.nh.nlmsg_seq = seq;
1041 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_ADDRESS_FILTER,
1045 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1055 if (answer.nh.nlmsg_type == NLMSG_ERROR) {
1059 } else if (answer.nh.nlmsg_type == NLMSG_DONE) {
1064 } else if (answer.nh.nlmsg_type == XFRM_MSG_NEWSA) {
1106 struct nlmsghdr nh;
1114 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.info));
1115 req.nh.nlmsg_type = XFRM_MSG_NEWPOLICY;
1116 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
1117 req.nh.nlmsg_seq = seq;
1146 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_TMPL, &tmpl, sizeof(tmpl)))
1149 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1181 struct nlmsghdr nh;
1187 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.id));
1188 req.nh.nlmsg_type = XFRM_MSG_DELPOLICY;
1189 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
1190 req.nh.nlmsg_seq = seq;
1200 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1231 struct nlmsghdr nh;
1238 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.id));
1239 req.nh.nlmsg_type = XFRM_MSG_DELSA;
1240 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
1241 req.nh.nlmsg_seq = seq;
1250 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_SRCADDR, &saddr, sizeof(saddr)))
1253 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1282 struct nlmsghdr nh;
1286 struct nlmsghdr nh;
1294 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.spi));
1295 req.nh.nlmsg_type = XFRM_MSG_ALLOCSPI;
1296 req.nh.nlmsg_flags = NLM_F_REQUEST;
1297 req.nh.nlmsg_seq = (*seq)++;
1304 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1312 } else if (answer.nh.nlmsg_type == XFRM_MSG_NEWSA) {
1321 } else if (answer.nh.nlmsg_type != NLMSG_ERROR) {
1322 printk("expected NLMSG_ERROR, got %d", (int)answer.nh.nlmsg_type);
1372 struct nlmsghdr nh;
1387 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.acq));
1388 req.nh.nlmsg_type = XFRM_MSG_ACQUIRE;
1389 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
1390 req.nh.nlmsg_seq = (*seq)++;
1399 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_TMPL, &xfrm_tmpl, sizeof(xfrm_tmpl)))
1402 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1410 } else if (req.nh.nlmsg_type != NLMSG_ERROR) {
1411 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type);
1443 struct nlmsghdr nh;
1465 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.expire));
1466 req.nh.nlmsg_type = XFRM_MSG_EXPIRE;
1467 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
1468 req.nh.nlmsg_seq = (*seq)++;
1476 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1484 } else if (req.nh.nlmsg_type != NLMSG_ERROR) {
1485 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type);
1515 struct nlmsghdr nh;
1540 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.expire));
1541 req.nh.nlmsg_type = XFRM_MSG_POLEXPIRE;
1542 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
1543 req.nh.nlmsg_seq = (*seq)++;
1554 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1562 } else if (req.nh.nlmsg_type != NLMSG_ERROR) {
1563 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type);
1596 struct nlmsghdr nh;
1606 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.unused));
1607 req.nh.nlmsg_type = XFRM_MSG_NEWSPDINFO;
1608 req.nh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
1609 req.nh.nlmsg_seq = (*seq)++;
1613 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_SPD_IPV4_HTHRESH, &thresh, sizeof(thresh)))
1618 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_SPD_IPV6_HTHRESH, &thresh, sizeof(thresh)))
1623 if (rtattr_pack(&req.nh, sizeof(req), XFRMA_IF_ID, NULL, 0)) {
1629 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1637 } else if (req.nh.nlmsg_type != NLMSG_ERROR) {
1638 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type);
1653 struct nlmsghdr nh;
1668 req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(req.unused));
1669 req.nh.nlmsg_type = XFRM_MSG_GETSPDINFO;
1670 req.nh.nlmsg_flags = NLM_F_REQUEST;
1671 req.nh.nlmsg_seq = (*seq)++;
1672 if (send(xfrm_sock, &req, req.nh.nlmsg_len, 0) < 0) {
1680 } else if (req.nh.nlmsg_type == XFRM_MSG_NEWSPDINFO) {
1681 size_t len = NLMSG_PAYLOAD(&req.nh, sizeof(req.unused));
1711 } else if (req.nh.nlmsg_type != NLMSG_ERROR) {
1712 printk("expected NLMSG_ERROR, got %d", (int)req.nh.nlmsg_type);