Lines Matching defs:rtm
489 if_copyrt(struct dhcpcd_ctx *ctx, struct rt *rt, struct rt_msghdr *rtm)
494 cp = (char *)(void *)(rtm + 1);
498 if (~rtm->rtm_addrs & (RTA_DST | RTA_GATEWAY))
501 if (rtm->rtm_flags & RTF_CLONED)
505 if (rtm->rtm_flags & RTF_LOCAL)
509 if (rtm->rtm_flags & RTF_BROADCAST)
513 get_addrs(rtm->rtm_addrs, cp, rti_info);
516 if (rtm->rtm_addrs & RTA_NETMASK)
522 if (rtm->rtm_index)
523 rt->iface = if_findindex(ctx->ifaces, rtm->rtm_index);
524 else if (rtm->rtm_addrs & RTA_IFP) {
533 !(~rtm->rtm_flags & (RTF_HOST | RTF_GATEWAY)))
553 struct rtm
557 } rtm;
558 char *bp = rtm.buffer;
582 memset(&rtm, 0, sizeof(rtm));
583 rtm.hdr.rtm_version = RTM_VERSION;
584 rtm.hdr.rtm_seq = 1;
585 rtm.hdr.rtm_type = cmd;
586 rtm.hdr.rtm_addrs = RTA_DST;
588 rtm.hdr.rtm_addrs |= RTA_GATEWAY;
589 rtm.hdr.rtm_flags = RTF_UP;
592 rtm.hdr.rtm_flags |= RTF_PINNED;
596 rtm.hdr.rtm_addrs |= RTA_IFA | RTA_IFP;
601 rtm.hdr.rtm_flags |= RTF_STATIC;
604 rtm.hdr.rtm_flags |= RTF_CLONING;
607 rtm.hdr.rtm_priority = RTP_CONNECTED;
621 rtm.hdr.rtm_flags |= RTF_CLONING;
622 rtm.hdr.rtm_addrs |= RTA_NETMASK;
624 rtm.hdr.rtm_flags |= RTF_HOST;
629 rtm.hdr.rtm_flags |= RTF_HOST | RTF_GATEWAY;
632 rtm.hdr.rtm_addrs &= ~(RTA_IFA | RTA_IFP);
634 rtm.hdr.rtm_addrs |= RTA_NETMASK;
635 if (rtm.hdr.rtm_flags & RTF_STATIC)
636 rtm.hdr.rtm_flags |= RTF_GATEWAY;
639 !(rtm.hdr.rtm_flags & RTF_GATEWAY))
640 rtm.hdr.rtm_addrs |= RTA_IFA | RTA_IFP;
643 if (rtm.hdr.rtm_addrs & RTA_GATEWAY) {
645 if ((rtm.hdr.rtm_flags & (RTF_HOST | RTF_CLONING) &&
647 if ((rtm.hdr.rtm_flags & RTF_HOST &&
650 !(rtm.hdr.rtm_flags & RTF_STATIC))
658 if (rtm.hdr.rtm_addrs & RTA_NETMASK)
662 (rtm.hdr.rtm_addrs & (RTA_IFP | RTA_IFA)))
664 rtm.hdr.rtm_index = (unsigned short)rt->iface->index;
665 if (rtm.hdr.rtm_addrs & RTA_IFP) {
670 if (rtm.hdr.rtm_addrs & RTA_IFA)
677 rtm.hdr.rtm_msglen = (unsigned short)(bp - (char *)&rtm);
678 retval = write(s, &rtm, rtm.hdr.rtm_msglen) == -1 ? -1 : 0;
686 struct rt_msghdr *rtm;
711 for (p = buf; p < end; p += rtm->rtm_msglen) {
712 rtm = (struct rt_msghdr *)(void *)p;
713 if (if_copyrt(ifp->ctx, &rt, rtm) == 0)
835 if_copyrt6(struct dhcpcd_ctx *ctx, struct rt6 *rt, struct rt_msghdr *rtm)
840 cp = (char *)(void *)(rtm + 1);
844 if (~rtm->rtm_addrs & (RTA_DST | RTA_GATEWAY))
847 if (rtm->rtm_flags & (RTF_CLONED | RTF_HOST))
850 if (rtm->rtm_flags & RTF_HOST)
854 if (rtm->rtm_flags & RTF_LOCAL)
858 get_addrs(rtm->rtm_addrs, cp, rti_info);
860 rt->flags = (unsigned int)rtm->rtm_flags;
862 if (rtm->rtm_addrs & RTA_NETMASK) {
911 if (rtm->rtm_index)
912 rt->iface = if_findindex(ctx->ifaces, rtm->rtm_index);
913 else if (rtm->rtm_addrs & RTA_IFP) {
922 !(~rtm->rtm_flags & (RTF_HOST | RTF_GATEWAY)))
941 struct rtm
945 } rtm;
946 char *bp = rtm.buffer;
969 memset(&rtm, 0, sizeof(rtm));
970 rtm.hdr.rtm_version = RTM_VERSION;
971 rtm.hdr.rtm_seq = 1;
972 rtm.hdr.rtm_type = cmd;
973 rtm.hdr.rtm_flags = RTF_UP | (int)rt->flags;
975 if (rtm.hdr.rtm_type != RTM_ADD)
976 rtm.hdr.rtm_flags |= RTF_PINNED;
978 rtm.hdr.rtm_addrs = RTA_DST | RTA_NETMASK;
982 rtm.hdr.rtm_flags |= RTF_CLONING;
985 rtm.hdr.rtm_priority = RTP_CONNECTED;
988 rtm.hdr.rtm_flags |= RTF_GATEWAY | RTF_STATIC;
991 rtm.hdr.rtm_addrs |= RTA_GATEWAY;
992 if (cmd == RTM_ADD && !(rtm.hdr.rtm_flags & RTF_REJECT))
993 rtm.hdr.rtm_addrs |= RTA_IFP | RTA_IFA;
996 if (rtm.hdr.rtm_addrs & RTA_GATEWAY) {
1005 if (rtm.hdr.rtm_addrs & RTA_NETMASK)
1009 (rtm.hdr.rtm_addrs & (RTA_IFP | RTA_IFA)))
1011 rtm.hdr.rtm_index = (unsigned short)rt->iface->index;
1012 if (rtm.hdr.rtm_addrs & RTA_IFP) {
1017 if (rtm.hdr.rtm_addrs & RTA_IFA) {
1027 rtm.hdr.rtm_inits |= RTV_MTU;
1028 rtm.hdr.rtm_rmx.rmx_mtu = rt->mtu;
1035 rtm.hdr.rtm_msglen = (unsigned short)(bp - (char *)&rtm);
1036 retval = write(s, &rtm, rtm.hdr.rtm_msglen) == -1 ? -1 : 0;
1044 struct rt_msghdr *rtm;
1069 for (p = buf; p < end; p += rtm->rtm_msglen) {
1070 rtm = (struct rt_msghdr *)(void *)p;
1071 if (if_copyrt6(ifp->ctx, &rt, rtm) == 0)
1151 struct rt_msghdr *rtm;
1174 for (p = msg; p < e; p += rtm->rtm_msglen) {
1175 rtm = (struct rt_msghdr *)(void *)p;
1177 if (rtm->rtm_pid == getpid())
1179 switch(rtm->rtm_type) {
1224 cp = (char *)(void *)(rtm + 1);
1229 if (if_copyrt(ctx, &rt, rtm) == 0)
1230 ipv4_handlert(ctx, rtm->rtm_type, &rt);
1235 if (~rtm->rtm_addrs & (RTA_DST | RTA_GATEWAY))
1244 if (rtm->rtm_flags & (RTF_HOST)) {
1245 get_addrs(rtm->rtm_addrs, cp, rti_info);
1256 rtm->rtm_type != RTM_DELETE &&
1262 if (if_copyrt6(ctx, &rt6, rtm) == 0)
1263 ipv6_handlert(ctx, rtm->rtm_type, &rt6);
1284 if (rtm->rtm_type != RTM_CHGADDR)
1287 if (rtm->rtm_type != RTM_NEWADDR)
1302 if (rtm->rtm_type == RTM_NEWADDR) {
1308 ipv4_handleifa(ctx, rtm->rtm_type,
1323 if (rtm->rtm_type == RTM_NEWADDR) {
1329 ipv6_handleifa(ctx, rtm->rtm_type, NULL,