Lines Matching defs:rtm

159 prepare_route_message(struct rt_msghdr *rtm, int cmd, struct sockaddr *dst,
163 rtsock_prepare_route_message(rtm, cmd, dst, mask, gw);
166 rtm->rtm_flags |= RTF_STATIC;
170 verify_route_message(struct rt_msghdr *rtm, int cmd, struct sockaddr *dst,
177 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_type == cmd,
179 rtm->rtm_type, rtsock_print_cmdtype(rtm->rtm_type));
180 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_errno == 0,
181 "got got errno %d as message reply", rtm->rtm_errno);
182 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->_rtm_spare1 == 0,
183 "expected rtm_spare==0, got %d", rtm->_rtm_spare1);
187 sa = rtsock_find_rtm_sa(rtm, RTA_DST);
188 RTSOCK_ATF_REQUIRE_MSG(rtm, sa != NULL, "DST is not set");
190 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "DST sa diff: %s", msg);
194 sa = rtsock_find_rtm_sa(rtm, RTA_NETMASK);
195 RTSOCK_ATF_REQUIRE_MSG(rtm, sa != NULL, "NETMASK is not set");
198 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "NETMASK sa diff: %s", msg);
202 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY);
203 RTSOCK_ATF_REQUIRE_MSG(rtm, sa != NULL, "GATEWAY is not set");
205 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "GATEWAY sa diff: %s", msg);
210 verify_route_message_extra(struct rt_msghdr *rtm, int ifindex, int rtm_flags)
212 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_index == ifindex,
213 "expected ifindex %d, got %d", ifindex, rtm->rtm_index);
215 if (rtm->rtm_flags != rtm_flags) {
218 rtm->rtm_flags);
222 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_flags == rtm_flags,
225 rtm->rtm_flags, got_flags);
230 verify_link_gateway(struct rt_msghdr *rtm, int ifindex)
235 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY);
236 RTSOCK_ATF_REQUIRE_MSG(rtm, sa != NULL, "GATEWAY is not set");
237 RTSOCK_ATF_REQUIRE_MSG(rtm, sa->sa_family == AF_LINK, "GW sa family is %d", sa->sa_family);
239 RTSOCK_ATF_REQUIRE_MSG(rtm, sdl->sdl_index == ifindex, "GW ifindex is %d", sdl->sdl_index);
247 struct rt_msghdr *rtm = (struct rt_msghdr *)buffer; \
278 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&c->net4,
281 rtsock_send_rtm(c->rtsock_fd, rtm);
283 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
293 verify_route_message(rtm, RTM_GET, (struct sockaddr *)&c->net4,
296 verify_route_message_extra(rtm, c->ifindex, RTF_UP | RTF_DONE | RTF_PINNED);
299 verify_link_gateway(rtm, c->ifindex);
300 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY);
301 RTSOCK_ATF_REQUIRE_MSG(rtm, sa != NULL, "GATEWAY is not set");
302 RTSOCK_ATF_REQUIRE_MSG(rtm, sa->sa_family == AF_LINK, "GW sa family is %d", sa->sa_family);
304 RTSOCK_ATF_REQUIRE_MSG(rtm, sdl->sdl_index == c->ifindex, "GW ifindex is %d", sdl->sdl_index);
324 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&c->net4, NULL, NULL);
326 rtsock_send_rtm(c->rtsock_fd, rtm);
328 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
337 verify_route_message(rtm, RTM_GET, (struct sockaddr *)&c->net4,
340 verify_route_message_extra(rtm, c->ifindex, RTF_UP | RTF_DONE | RTF_PINNED);
367 rtsock_prepare_route_message(rtm, RTM_GET, NULL,
369 rtsock_update_rtm_len(rtm);
371 ATF_CHECK_ERRNO(EINVAL, write(c->rtsock_fd, rtm, rtm->rtm_msglen) == -1);
392 rtsock_prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&c->addr4,
394 rtsock_update_rtm_len(rtm);
397 ATF_CHECK_ERRNO(0, write(c->rtsock_fd, rtm, rtm->rtm_msglen) > 0);
423 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
426 rtsock_send_rtm(c->rtsock_fd, rtm);
427 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
436 verify_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
438 verify_route_message_extra(rtm, c->ifindex,
462 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
464 rtsock_update_rtm_len(rtm);
468 ATF_CHECK_ERRNO(0, write(c->rtsock_fd, rtm, rtm->rtm_msglen) > 0);
489 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
492 rtsock_send_rtm(c->rtsock_fd, rtm);
495 prepare_route_message(rtm, RTM_DELETE, (struct sockaddr *)&net4,
498 rtsock_send_rtm(c->rtsock_fd, rtm);
500 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
509 verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&net4,
512 verify_route_message_extra(rtm, c->ifindex, RTF_DONE | RTF_GATEWAY | RTF_STATIC);
554 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
557 rtsock_send_rtm(c->rtsock_fd, rtm);
558 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
560 verify_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
565 prepare_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net4,
567 rtsock_send_rtm(c->rtsock_fd, rtm);
569 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
571 verify_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net4,
574 verify_route_message_extra(rtm, if_nametoindex(c->ifnames[1]),
578 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&net4,
581 rtsock_send_rtm(c->rtsock_fd, rtm);
591 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
592 verify_route_message_extra(rtm, if_nametoindex(c->ifnames[1]),
614 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
617 rtsock_send_rtm(c->rtsock_fd, rtm);
618 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
621 prepare_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net4,
623 rtm->rtm_inits |= RTV_MTU;
624 rtm->rtm_rmx.rmx_mtu = test_mtu;
626 rtsock_send_rtm(c->rtsock_fd, rtm);
627 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
629 verify_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net4,
632 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_rmx.rmx_mtu == test_mtu,
633 "expected mtu: %lu, got %lu", test_mtu, rtm->rtm_rmx.rmx_mtu);
636 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&net4,
639 rtsock_send_rtm(c->rtsock_fd, rtm);
640 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
642 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_rmx.rmx_mtu == test_mtu,
643 "expected mtu: %lu, got %lu", test_mtu, rtm->rtm_rmx.rmx_mtu);
664 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
669 rtm->rtm_flags |= test_flags;
670 rtsock_send_rtm(c->rtsock_fd, rtm);
671 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
674 prepare_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net4,
676 rtm->rtm_flags &= ~test_flags;
679 rtsock_send_rtm(c->rtsock_fd, rtm);
680 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
683 verify_route_message_extra(rtm, c->ifindex, desired_flags | RTF_DONE);
686 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&net4,
689 rtsock_send_rtm(c->rtsock_fd, rtm);
690 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
692 verify_route_message_extra(rtm, c->ifindex, desired_flags | RTF_DONE);
714 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
717 rtsock_send_rtm(c->rtsock_fd, rtm);
718 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
727 verify_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
730 verify_route_message_extra(rtm, c->ifindex,
758 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
761 rtsock_send_rtm(c->rtsock_fd, rtm);
764 prepare_route_message(rtm, RTM_DELETE, (struct sockaddr *)&net6,
767 rtsock_send_rtm(c->rtsock_fd, rtm);
768 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
778 verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&net6,
780 verify_route_message_extra(rtm, c->ifindex, RTF_DONE | RTF_GATEWAY | RTF_STATIC);
826 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
829 rtsock_send_rtm(c->rtsock_fd, rtm);
830 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
832 verify_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
837 prepare_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net6,
839 rtsock_send_rtm(c->rtsock_fd, rtm);
841 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
843 verify_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net6,
846 verify_route_message_extra(rtm, if_nametoindex(c->ifnames[1]),
850 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&net6,
853 rtsock_send_rtm(c->rtsock_fd, rtm);
863 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
864 verify_route_message_extra(rtm, if_nametoindex(c->ifnames[1]),
885 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
889 rtsock_send_rtm(c->rtsock_fd, rtm);
890 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
893 prepare_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net6,
895 rtm->rtm_inits |= RTV_MTU;
896 rtm->rtm_rmx.rmx_mtu = test_mtu;
898 rtsock_send_rtm(c->rtsock_fd, rtm);
899 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
901 verify_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net6,
904 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_rmx.rmx_mtu == test_mtu,
905 "expected mtu: %lu, got %lu", test_mtu, rtm->rtm_rmx.rmx_mtu);
908 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&net6,
911 rtsock_send_rtm(c->rtsock_fd, rtm);
912 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
914 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_rmx.rmx_mtu == test_mtu,
915 "expected mtu: %lu, got %lu", test_mtu, rtm->rtm_rmx.rmx_mtu);
936 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
941 rtm->rtm_flags |= test_flags;
942 rtsock_send_rtm(c->rtsock_fd, rtm);
943 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
946 prepare_route_message(rtm, RTM_CHANGE, (struct sockaddr *)&net6,
948 rtm->rtm_flags &= ~test_flags;
951 rtsock_send_rtm(c->rtsock_fd, rtm);
952 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
955 verify_route_message_extra(rtm, c->ifindex, desired_flags | RTF_DONE);
958 prepare_route_message(rtm, RTM_GET, (struct sockaddr *)&net6,
961 rtsock_send_rtm(c->rtsock_fd, rtm);
962 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
964 verify_route_message_extra(rtm, c->ifindex, desired_flags | RTF_DONE);
985 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net4,
991 rtm->rtm_rmx.rmx_expire = tv.tv_sec - 1;
992 rtm->rtm_inits |= RTV_EXPIRE;
994 rtsock_send_rtm(c->rtsock_fd, rtm);
995 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
996 ATF_REQUIRE_MSG(rtm != NULL, "unable to get rtsock reply for RTM_ADD");
997 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_inits & RTV_EXPIRE, "RTV_EXPIRE not set");
1000 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1002 verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&net4,
1005 verify_route_message_extra(rtm, c->ifindex,
1032 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&net6,
1038 rtm->rtm_rmx.rmx_expire = tv.tv_sec - 1;
1039 rtm->rtm_inits |= RTV_EXPIRE;
1041 rtsock_send_rtm(c->rtsock_fd, rtm);
1042 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq);
1043 ATF_REQUIRE_MSG(rtm != NULL, "unable to get rtsock reply for RTM_ADD");
1044 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_inits & RTV_EXPIRE, "RTV_EXPIRE not set");
1047 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1049 verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&net6,
1052 verify_route_message_extra(rtm, c->ifindex,
1082 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1083 if ((rtm->rtm_type == RTM_ADD) && ((rtm->rtm_flags & RTF_LLINFO) == 0))
1088 verify_route_message(rtm, RTM_ADD, (struct sockaddr *)&c->addr6, NULL, NULL);
1089 rtsock_validate_pid_kernel(rtm);
1091 RTSOCK_ATF_REQUIRE_MSG(rtm, rtsock_find_rtm_sa(rtm, RTA_NETMASK) == NULL, "netmask is set");
1094 verify_link_gateway(rtm, c->ifindex);
1097 verify_route_message_extra(rtm, if_nametoindex("lo0"), expected_rt_flags);
1121 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1123 if ((rtm->rtm_type == RTM_ADD) && (rtsock_find_rtm_sa(rtm, RTA_NETMASK)))
1128 verify_route_message(rtm, RTM_ADD, (struct sockaddr *)&c->net6,
1132 verify_link_gateway(rtm, c->ifindex);
1135 verify_route_message_extra(rtm, c->ifindex, expected_rt_flags);
1165 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1168 if (rtm->rtm_type == RTM_NEWADDR) {
1175 if ((rtm->rtm_type == RTM_ADD) && (rtsock_find_rtm_sa(rtm, RTA_NETMASK))) {
1181 if ((rtm->rtm_type == RTM_ADD) && ((rtm->rtm_flags & RTF_LLDATA) == 0)) {
1187 RLOG("skipping msg type %s, try: %d", rtsock_print_cmdtype(rtm->rtm_type),
1212 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1213 if ((rtm->rtm_type == RTM_DELETE) &&
1214 ((rtm->rtm_flags & RTF_LLINFO) == 0) &&
1215 rtsock_find_rtm_sa(rtm, RTA_NETMASK) == NULL)
1220 verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&c->addr6, NULL, NULL);
1221 rtsock_validate_pid_kernel(rtm);
1223 RTSOCK_ATF_REQUIRE_MSG(rtm, rtsock_find_rtm_sa(rtm, RTA_NETMASK) == NULL, "netmask is set");
1226 verify_link_gateway(rtm, c->ifindex);
1230 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_flags == expected_rt_flags,
1231 "expected rtm flags: 0x%X, got 0x%X", expected_rt_flags, rtm->rtm_flags);
1250 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1252 if ((rtm->rtm_type == RTM_DELETE) && (rtsock_find_rtm_sa(rtm, RTA_NETMASK)))
1257 verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&c->net6,
1261 verify_link_gateway(rtm, c->ifindex);
1264 verify_route_message_extra(rtm, c->ifindex, expected_rt_flags);
1287 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1289 if ((rtm->rtm_type == RTM_ADD) && (rtsock_find_rtm_sa(rtm, RTA_NETMASK)))
1294 verify_route_message(rtm, RTM_ADD, (struct sockaddr *)&c->net4,
1298 verify_link_gateway(rtm, c->ifindex);
1301 verify_route_message_extra(rtm, c->ifindex, expected_rt_flags);
1330 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1333 if (rtm->rtm_type == RTM_NEWADDR) {
1340 if ((rtm->rtm_type == RTM_ADD) && (rtsock_find_rtm_sa(rtm, RTA_NETMASK))) {
1346 RLOG("skipping msg type %s, try: %d", rtsock_print_cmdtype(rtm->rtm_type),
1372 rtm = rtsock_read_rtm(c->rtsock_fd, buffer, sizeof(buffer));
1374 if ((rtm->rtm_type == RTM_DELETE) && (rtsock_find_rtm_sa(rtm, RTA_NETMASK)))
1379 verify_route_message(rtm, RTM_DELETE, (struct sockaddr *)&c->net4,
1383 verify_link_gateway(rtm, c->ifindex);
1386 verify_route_message_extra(rtm, c->ifindex, expected_rt_flags);