• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/net/decnet/

Lines Matching refs:ifa

78 static void dn_ifaddr_notify(int event, struct dn_ifaddr *ifa);
82 static void dn_send_brd_hello(struct net_device *dev, struct dn_ifaddr *ifa);
83 static void dn_send_ptp_hello(struct net_device *dev, struct dn_ifaddr *ifa);
306 struct dn_ifaddr *ifa;
308 ifa = kzalloc(sizeof(*ifa), GFP_KERNEL);
310 return ifa;
313 static __inline__ void dn_dev_free_ifa(struct dn_ifaddr *ifa)
315 kfree(ifa);
345 static int dn_dev_insert_ifa(struct dn_dev *dn_db, struct dn_ifaddr *ifa)
355 if (ifa1->ifa_local == ifa->ifa_local)
360 if (ifa->ifa_local != dn_eth2dn(dev->dev_addr)) {
361 dn_dn2eth(mac_addr, ifa->ifa_local);
366 ifa->ifa_next = dn_db->ifa_list;
367 dn_db->ifa_list = ifa;
369 dn_ifaddr_notify(RTM_NEWADDR, ifa);
370 blocking_notifier_call_chain(&dnaddr_chain, NETDEV_UP, ifa);
375 static int dn_dev_set_ifa(struct net_device *dev, struct dn_ifaddr *ifa)
387 ifa->ifa_dev = dn_db;
390 ifa->ifa_scope = RT_SCOPE_HOST;
392 rv = dn_dev_insert_ifa(dn_db, ifa);
394 dn_dev_free_ifa(ifa);
406 struct dn_ifaddr *ifa = NULL, **ifap = NULL;
436 for (ifap = &dn_db->ifa_list; (ifa=*ifap) != NULL; ifap = &ifa->ifa_next)
437 if (strcmp(ifr->ifr_name, ifa->ifa_label) == 0)
441 if (ifa == NULL && cmd != SIOCSIFADDR) {
448 *((__le16 *)sdn->sdn_nodeaddr) = ifa->ifa_local;
452 if (!ifa) {
453 if ((ifa = dn_dev_alloc_ifa()) == NULL) {
457 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ);
459 if (ifa->ifa_local == dn_saddr2dn(sdn))
464 ifa->ifa_local = ifa->ifa_address = dn_saddr2dn(sdn);
466 ret = dn_dev_set_ifa(dev, ifa);
557 struct dn_ifaddr *ifa, **ifap;
573 for (ifap = &dn_db->ifa_list; (ifa = *ifap); ifap = &ifa->ifa_next) {
575 nla_memcmp(tb[IFA_LOCAL], &ifa->ifa_local, 2))
578 if (tb[IFA_LABEL] && nla_strcmp(tb[IFA_LABEL], ifa->ifa_label))
596 struct dn_ifaddr *ifa;
619 if ((ifa = dn_dev_alloc_ifa()) == NULL)
625 ifa->ifa_local = nla_get_le16(tb[IFA_LOCAL]);
626 ifa->ifa_address = nla_get_le16(tb[IFA_ADDRESS]);
627 ifa->ifa_flags = ifm->ifa_flags;
628 ifa->ifa_scope = ifm->ifa_scope;
629 ifa->ifa_dev = dn_db;
632 nla_strlcpy(ifa->ifa_label, tb[IFA_LABEL], IFNAMSIZ);
634 memcpy(ifa->ifa_label, dev->name, IFNAMSIZ);
636 err = dn_dev_insert_ifa(dn_db, ifa);
638 dn_dev_free_ifa(ifa);
651 static int dn_nl_fill_ifaddr(struct sk_buff *skb, struct dn_ifaddr *ifa,
664 ifm->ifa_flags = ifa->ifa_flags | IFA_F_PERMANENT;
665 ifm->ifa_scope = ifa->ifa_scope;
666 ifm->ifa_index = ifa->ifa_dev->dev->ifindex;
668 if (ifa->ifa_address)
669 NLA_PUT_LE16(skb, IFA_ADDRESS, ifa->ifa_address);
670 if (ifa->ifa_local)
671 NLA_PUT_LE16(skb, IFA_LOCAL, ifa->ifa_local);
672 if (ifa->ifa_label[0])
673 NLA_PUT_STRING(skb, IFA_LABEL, ifa->ifa_label);
682 static void dn_ifaddr_notify(int event, struct dn_ifaddr *ifa)
691 err = dn_nl_fill_ifaddr(skb, ifa, 0, 0, event, 0);
711 struct dn_ifaddr *ifa;
732 for (ifa = dn_db->ifa_list, dn_idx = 0; ifa;
733 ifa = ifa->ifa_next, dn_idx++) {
737 if (dn_nl_fill_ifaddr(skb, ifa, NETLINK_CB(cb->skb).pid,
755 struct dn_ifaddr *ifa;
762 ifa = dn_db->ifa_list;
763 if (ifa != NULL) {
764 *addr = ifa->ifa_local;
799 static void dn_send_endnode_hello(struct net_device *dev, struct dn_ifaddr *ifa)
815 dn_dn2eth(msg->id, ifa->ifa_local);
843 static int dn_am_i_a_router(struct dn_neigh *dn, struct dn_dev *dn_db, struct dn_ifaddr *ifa)
861 if (le16_to_cpu(dn->addr) < le16_to_cpu(ifa->ifa_local))
867 static void dn_send_router_hello(struct net_device *dev, struct dn_ifaddr *ifa)
900 dn_dn2eth(ptr, ifa->ifa_local);
929 if (dn_am_i_a_router(dn, dn_db, ifa)) {
939 static void dn_send_brd_hello(struct net_device *dev, struct dn_ifaddr *ifa)
944 dn_send_endnode_hello(dev, ifa);
946 dn_send_router_hello(dev, ifa);
949 static void dn_send_ptp_hello(struct net_device *dev, struct dn_ifaddr *ifa)
966 *((__le16 *)ptr) = ifa->ifa_local;
973 dn_dn2eth(src, ifa->ifa_local);
1007 struct dn_ifaddr *ifa;
1011 for(ifa = dn_db->ifa_list; ifa; ifa = ifa->ifa_next) {
1012 if (!(ifa->ifa_flags & IFA_F_SECONDARY))
1013 dn_db->parms.timer3(dev, ifa);
1093 struct dn_ifaddr *ifa;
1124 if ((ifa = dn_dev_alloc_ifa()) == NULL)
1127 ifa->ifa_local = ifa->ifa_address = addr;
1128 ifa->ifa_flags = 0;
1129 ifa->ifa_scope = RT_SCOPE_UNIVERSE;
1130 strcpy(ifa->ifa_label, dev->name);
1132 dn_dev_set_ifa(dev, ifa);
1176 struct dn_ifaddr *ifa;
1181 while((ifa = dn_db->ifa_list) != NULL) {
1183 dn_dev_free_ifa(ifa);