• Home
  • Raw
  • Download

Lines Matching refs:ifa

395 			struct in_ifaddr *ifa;  in rtentry_to_fib_config()  local
400 for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) in rtentry_to_fib_config()
401 if (strcmp(ifa->ifa_label, devname) == 0) in rtentry_to_fib_config()
403 if (ifa == NULL) in rtentry_to_fib_config()
405 cfg->fc_prefsrc = ifa->ifa_local; in rtentry_to_fib_config()
672 static void fib_magic(int cmd, int type, __be32 dst, int dst_len, struct in_ifaddr *ifa) in fib_magic() argument
674 struct net *net = dev_net(ifa->ifa_dev->dev); in fib_magic()
681 .fc_prefsrc = ifa->ifa_local, in fib_magic()
682 .fc_oif = ifa->ifa_dev->dev->ifindex, in fib_magic()
710 void fib_add_ifaddr(struct in_ifaddr *ifa) in fib_add_ifaddr() argument
712 struct in_device *in_dev = ifa->ifa_dev; in fib_add_ifaddr()
714 struct in_ifaddr *prim = ifa; in fib_add_ifaddr()
715 __be32 mask = ifa->ifa_mask; in fib_add_ifaddr()
716 __be32 addr = ifa->ifa_local; in fib_add_ifaddr()
717 __be32 prefix = ifa->ifa_address&mask; in fib_add_ifaddr()
719 if (ifa->ifa_flags&IFA_F_SECONDARY) { in fib_add_ifaddr()
733 if (ifa->ifa_broadcast && ifa->ifa_broadcast != htonl(0xFFFFFFFF)) in fib_add_ifaddr()
734 fib_magic(RTM_NEWROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim); in fib_add_ifaddr()
736 if (!ipv4_is_zeronet(prefix) && !(ifa->ifa_flags&IFA_F_SECONDARY) && in fib_add_ifaddr()
737 (prefix != addr || ifa->ifa_prefixlen < 32)) { in fib_add_ifaddr()
739 RTN_UNICAST, prefix, ifa->ifa_prefixlen, prim); in fib_add_ifaddr()
742 if (ifa->ifa_prefixlen < 31) { in fib_add_ifaddr()
749 static void fib_del_ifaddr(struct in_ifaddr *ifa) in fib_del_ifaddr() argument
751 struct in_device *in_dev = ifa->ifa_dev; in fib_del_ifaddr()
754 struct in_ifaddr *prim = ifa; in fib_del_ifaddr()
755 __be32 brd = ifa->ifa_address|~ifa->ifa_mask; in fib_del_ifaddr()
756 __be32 any = ifa->ifa_address&ifa->ifa_mask; in fib_del_ifaddr()
763 if (!(ifa->ifa_flags&IFA_F_SECONDARY)) in fib_del_ifaddr()
765 RTN_UNICAST, any, ifa->ifa_prefixlen, prim); in fib_del_ifaddr()
767 prim = inet_ifa_byprefix(in_dev, any, ifa->ifa_mask); in fib_del_ifaddr()
781 if (ifa->ifa_local == ifa1->ifa_local) in fib_del_ifaddr()
783 if (ifa->ifa_broadcast == ifa1->ifa_broadcast) in fib_del_ifaddr()
792 fib_magic(RTM_DELROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim); in fib_del_ifaddr()
798 fib_magic(RTM_DELROUTE, RTN_LOCAL, ifa->ifa_local, 32, prim); in fib_del_ifaddr()
801 if (inet_addr_type(dev_net(dev), ifa->ifa_local) != RTN_LOCAL) { in fib_del_ifaddr()
808 if (fib_sync_down_addr(dev_net(dev), ifa->ifa_local)) in fib_del_ifaddr()
906 struct in_ifaddr *ifa = (struct in_ifaddr *)ptr; in fib_inetaddr_event() local
907 struct net_device *dev = ifa->ifa_dev->dev; in fib_inetaddr_event()
911 fib_add_ifaddr(ifa); in fib_inetaddr_event()
918 fib_del_ifaddr(ifa); in fib_inetaddr_event()
919 if (ifa->ifa_dev->ifa_list == NULL) { in fib_inetaddr_event()
948 fib_add_ifaddr(ifa); in fib_netdev_event()