Lines Matching refs:rtm
70 void rtsock_update_rtm_len(struct rt_msghdr *rtm);
72 void rtsock_add_rtm_sa(struct rt_msghdr *rtm, int addr_type, struct sockaddr *sa);
654 rtsock_send_rtm(int fd, struct rt_msghdr *rtm) in rtsock_send_rtm() argument
659 rtsock_update_rtm_len(rtm); in rtsock_send_rtm()
661 len = write(fd, rtm, rtm->rtm_msglen); in rtsock_send_rtm()
663 RTSOCK_ATF_REQUIRE_MSG(rtm, len == rtm->rtm_msglen, in rtsock_send_rtm()
665 rtm->rtm_msglen, len, strerror(my_errno)); in rtsock_send_rtm()
697 struct rt_msghdr *rtm; in rtsock_read_rtm_reply() local
701 rtm = rtsock_read_rtm(fd, buffer, buflen); in rtsock_read_rtm_reply()
702 if (rtm->rtm_pid == getpid() && rtm->rtm_seq == seq) in rtsock_read_rtm_reply()
708 rtsock_print_rtm(rtm); in rtsock_read_rtm_reply()
710 return (rtm); in rtsock_read_rtm_reply()
717 rtsock_prepare_route_message_base(struct rt_msghdr *rtm, int cmd) in rtsock_prepare_route_message_base() argument
720 memset(rtm, 0, sizeof(struct rt_msghdr)); in rtsock_prepare_route_message_base()
721 rtm->rtm_type = cmd; in rtsock_prepare_route_message_base()
722 rtm->rtm_version = RTM_VERSION; in rtsock_prepare_route_message_base()
723 rtm->rtm_seq = _rtm_seq++; in rtsock_prepare_route_message_base()
727 rtsock_prepare_route_message(struct rt_msghdr *rtm, int cmd, struct sockaddr *dst, in rtsock_prepare_route_message() argument
731 rtsock_prepare_route_message_base(rtm, cmd); in rtsock_prepare_route_message()
733 rtsock_add_rtm_sa(rtm, RTA_DST, dst); in rtsock_prepare_route_message()
736 rtsock_add_rtm_sa(rtm, RTA_GATEWAY, gw); in rtsock_prepare_route_message()
737 rtm->rtm_flags |= RTF_GATEWAY; in rtsock_prepare_route_message()
741 rtsock_add_rtm_sa(rtm, RTA_NETMASK, mask); in rtsock_prepare_route_message()
745 rtsock_add_rtm_sa(struct rt_msghdr *rtm, int addr_type, struct sockaddr *sa) in rtsock_add_rtm_sa() argument
747 char *ptr = (char *)(rtm + 1); in rtsock_add_rtm_sa()
749 if (rtm->rtm_addrs & (1 << i)) { in rtsock_add_rtm_sa()
755 rtm->rtm_addrs |= addr_type; in rtsock_add_rtm_sa()
760 rtsock_find_rtm_sa(struct rt_msghdr *rtm, int addr_type) in rtsock_find_rtm_sa() argument
762 char *ptr = (char *)(rtm + 1); in rtsock_find_rtm_sa()
764 if (rtm->rtm_addrs & (1 << i)) { in rtsock_find_rtm_sa()
776 rtsock_calc_rtm_len(struct rt_msghdr *rtm) in rtsock_calc_rtm_len() argument
780 char *ptr = (char *)(rtm + 1); in rtsock_calc_rtm_len()
782 if (rtm->rtm_addrs & (1 << i)) { in rtsock_calc_rtm_len()
794 rtsock_update_rtm_len(struct rt_msghdr *rtm) in rtsock_update_rtm_len() argument
797 rtm->rtm_msglen = rtsock_calc_rtm_len(rtm); in rtsock_update_rtm_len()
835 struct rt_msghdr *rtm; in rtsock_validate_message() local
839 rtm = (struct rt_msghdr *)buffer; in rtsock_validate_message()
840 ATF_REQUIRE_MSG(rtm->rtm_version == RTM_VERSION, "unknown RTM_VERSION: expected %d got %d", in rtsock_validate_message()
841 RTM_VERSION, rtm->rtm_version); in rtsock_validate_message()
842 ATF_REQUIRE_MSG(rtm->rtm_msglen <= len, "wrong message length: expected %d got %d", in rtsock_validate_message()
843 (int)len, (int)rtm->rtm_msglen); in rtsock_validate_message()
845 switch (rtm->rtm_type) { in rtsock_validate_message()
850 _validate_message_sockaddrs(buffer, rtm->rtm_msglen, in rtsock_validate_message()
851 sizeof(struct rt_msghdr), rtm->rtm_addrs); in rtsock_validate_message()
855 _validate_message_sockaddrs(buffer, rtm->rtm_msglen, in rtsock_validate_message()
862 rtsock_validate_pid_ours(struct rt_msghdr *rtm) in rtsock_validate_pid_ours() argument
864 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_pid == getpid(), "expected pid %d, got %d", in rtsock_validate_pid_ours()
865 getpid(), rtm->rtm_pid); in rtsock_validate_pid_ours()
869 rtsock_validate_pid_user(struct rt_msghdr *rtm) in rtsock_validate_pid_user() argument
871 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_pid > 0, "expected non-zero pid, got %d", in rtsock_validate_pid_user()
872 rtm->rtm_pid); in rtsock_validate_pid_user()
876 rtsock_validate_pid_kernel(struct rt_msghdr *rtm) in rtsock_validate_pid_kernel() argument
878 RTSOCK_ATF_REQUIRE_MSG(rtm, rtm->rtm_pid == 0, "expected zero pid, got %d", in rtsock_validate_pid_kernel()
879 rtm->rtm_pid); in rtsock_validate_pid_kernel()