Lines Matching +full:use +full:- +full:rtm

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
6 * Redistribution and use in source and binary forms, with or without
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 snprintf(vnet_name, sizeof(vnet_name), "vt-%s", atf_tc_get_ident(tc)); in jump_vnet()
39 vnet_switch_one(vnet_name, c->ifname); in jump_vnet()
42 c->ifindex = if_nametoindex(c->ifname); in jump_vnet()
55 ret = iface_turn_up(c->ifname); in presetup_ipv6()
56 ATF_REQUIRE_MSG(ret == 0, "Unable to turn up %s", c->ifname); in presetup_ipv6()
57 ret = iface_enable_ipv6(c->ifname); in presetup_ipv6()
58 ATF_REQUIRE_MSG(ret == 0, "Unable to enable IPv6 on %s", c->ifname); in presetup_ipv6()
60 c->rtsock_fd = rtsock_setup_socket(); in presetup_ipv6()
76 ret = iface_setup_addr(c->ifname, c->addr4_str, c->plen4); in presetup_ipv4()
79 c->rtsock_fd = rtsock_setup_socket(); in presetup_ipv4()
85 prepare_route_message(struct rt_msghdr *rtm, int cmd, struct sockaddr *dst, in prepare_route_message() argument
89 rtsock_prepare_route_message(rtm, cmd, dst, NULL, gw); in prepare_route_message()
91 rtm->rtm_flags |= (RTF_HOST | RTF_STATIC | RTF_LLDATA); in prepare_route_message()
100 struct rt_msghdr *rtm = (struct rt_msghdr *)buffer; \
122 RTM_DECLARE_ROOT_TEST(rtm_add_v6_ll_lle_success, "Tests addition of link-local IPv6 ND entry");
133 snprintf(str_buf, sizeof(str_buf), "%s%%%s", v6addr, c->ifname); in ATF_TC_BODY()
137 snprintf(str_buf, sizeof(str_buf), "%s%%%s", c->remote_lladdr, c->ifname); in ATF_TC_BODY()
140 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&sin6, (struct sockaddr *)&ether); in ATF_TC_BODY()
141 rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
144 * Got message of size 240 on 2019-12-17 15:06:51 in ATF_TC_BODY()
151 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq); in ATF_TC_BODY()
153 sa = rtsock_find_rtm_sa(rtm, RTA_DST); in ATF_TC_BODY()
155 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "DST sa diff: %s", msg); in ATF_TC_BODY()
157 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY); in ATF_TC_BODY()
160 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "GATEWAY sa diff: %s", msg); in ATF_TC_BODY()
166 RTSOCK_ATF_REQUIRE_MSG(rtm, sdl->sdl_type > 0, "sdl_type not set"); in ATF_TC_BODY()
180 sin6 = c->net6; in ATF_TC_BODY()
186 snprintf(str_buf, sizeof(str_buf), "%s%%%s", c->remote_lladdr, c->ifname); in ATF_TC_BODY()
189 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&sin6, (struct sockaddr *)&ether); in ATF_TC_BODY()
191 rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
194 * Got message of size 240 on 2019-12-17 14:56:43 in ATF_TC_BODY()
203 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq); in ATF_TC_BODY()
205 sa = rtsock_find_rtm_sa(rtm, RTA_DST); in ATF_TC_BODY()
207 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "DST sa diff: %s", msg); in ATF_TC_BODY()
209 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY); in ATF_TC_BODY()
212 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "GATEWAY sa diff: %s", msg); in ATF_TC_BODY()
218 RTSOCK_ATF_REQUIRE_MSG(rtm, sdl->sdl_type > 0, "sdl_type not set"); in ATF_TC_BODY()
232 sin = c->addr4; in ATF_TC_BODY()
233 /* Use the next IPv4 address after self */ in ATF_TC_BODY()
237 snprintf(str_buf, sizeof(str_buf), "%s%%%s", c->remote_lladdr, c->ifname); in ATF_TC_BODY()
240 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&sin, (struct sockaddr *)&ether); in ATF_TC_BODY()
242 len = rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
251 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq); in ATF_TC_BODY()
253 sa = rtsock_find_rtm_sa(rtm, RTA_DST); in ATF_TC_BODY()
255 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "DST sa diff: %s", msg); in ATF_TC_BODY()
257 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY); in ATF_TC_BODY()
260 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "GATEWAY sa diff: %s", msg); in ATF_TC_BODY()
267 RTM_DECLARE_ROOT_TEST(rtm_del_v6_ll_lle_success, "Tests removal of link-local IPv6 ND entry");
279 snprintf(str_buf, sizeof(str_buf), "%s%%%s", v6addr, c->ifname); in ATF_TC_BODY()
283 snprintf(str_buf, sizeof(str_buf), "%s%%%s", c->remote_lladdr, c->ifname); in ATF_TC_BODY()
286 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&sin6, (struct sockaddr *)&ether); in ATF_TC_BODY()
288 rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
291 prepare_route_message(rtm, RTM_DELETE, (struct sockaddr *)&sin6, (struct sockaddr *)&ether); in ATF_TC_BODY()
293 rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
295 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq); in ATF_TC_BODY()
297 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_type == RTM_DELETE, "rtm_type is not delete"); in ATF_TC_BODY()
299 sa = rtsock_find_rtm_sa(rtm, RTA_DST); in ATF_TC_BODY()
301 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "DST sa diff: %s", msg); in ATF_TC_BODY()
303 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY); in ATF_TC_BODY()
306 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "GATEWAY sa diff: %s", msg); in ATF_TC_BODY()
323 sin6 = c->net6; in ATF_TC_BODY()
329 snprintf(str_buf, sizeof(str_buf), "%s%%%s", c->remote_lladdr, c->ifname); in ATF_TC_BODY()
332 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&sin6, (struct sockaddr *)&ether); in ATF_TC_BODY()
334 len = rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
337 prepare_route_message(rtm, RTM_DELETE, (struct sockaddr *)&sin6, (struct sockaddr *)&ether); in ATF_TC_BODY()
339 rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
341 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq); in ATF_TC_BODY()
343 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_type == RTM_DELETE, "rtm_type is not delete"); in ATF_TC_BODY()
345 sa = rtsock_find_rtm_sa(rtm, RTA_DST); in ATF_TC_BODY()
347 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "DST sa diff: %s", msg); in ATF_TC_BODY()
349 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY); in ATF_TC_BODY()
352 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "GATEWAY sa diff: %s", msg); in ATF_TC_BODY()
369 sin = c->addr4; in ATF_TC_BODY()
370 /* Use the next IPv4 address after self */ in ATF_TC_BODY()
374 snprintf(str_buf, sizeof(str_buf), "%s%%%s", c->remote_lladdr, c->ifname); in ATF_TC_BODY()
377 prepare_route_message(rtm, RTM_ADD, (struct sockaddr *)&sin, (struct sockaddr *)&ether); in ATF_TC_BODY()
379 rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
382 prepare_route_message(rtm, RTM_DELETE, (struct sockaddr *)&sin, (struct sockaddr *)&ether); in ATF_TC_BODY()
384 rtsock_send_rtm(c->rtsock_fd, rtm); in ATF_TC_BODY()
386 rtm = rtsock_read_rtm_reply(c->rtsock_fd, buffer, sizeof(buffer), rtm->rtm_seq); in ATF_TC_BODY()
388 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_type == RTM_DELETE, "rtm_type is not delete"); in ATF_TC_BODY()
390 sa = rtsock_find_rtm_sa(rtm, RTA_DST); in ATF_TC_BODY()
392 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "DST sa diff: %s", msg); in ATF_TC_BODY()
394 sa = rtsock_find_rtm_sa(rtm, RTA_GATEWAY); in ATF_TC_BODY()
397 RTSOCK_ATF_REQUIRE_MSG(rtm, ret != 0, "GATEWAY sa diff: %s", msg); in ATF_TC_BODY()