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