Lines Matching refs:ia

96 	register struct in_ifaddr *ia;
99 TAILQ_FOREACH(ia, &V_in_ifaddrhead, ia_link) {
100 if ((i & ia->ia_subnetmask) == ia->ia_subnet) {
116 struct in_ifaddr *ia;
119 LIST_FOREACH(ia, INADDR_HASH(in.s_addr), ia_hash) {
120 if (IA_SIN(ia)->sin_addr.s_addr == in.s_addr) {
214 register struct in_ifaddr *ia, *iap;
231 ia = NULL;
348 ia = iap;
352 if (ia != NULL)
353 ifa_ref(&ia->ia_ifa);
355 if (ia == NULL) {
364 ia = iap;
368 if (ia != NULL)
369 ifa_ref(&ia->ia_ifa);
372 if (ia == NULL)
383 for (oia = ia; ia; ia = TAILQ_NEXT(ia, ia_link)) {
384 if (ia->ia_ifp == ifp &&
385 ia->ia_addr.sin_addr.s_addr ==
389 if (ia != NULL && ia != oia)
390 ifa_ref(&ia->ia_ifa);
391 if (oia != NULL && ia != oia)
402 if (cmd == SIOCDIFADDR && ia == NULL) {
406 if (ia == NULL) {
407 ia = (struct in_ifaddr *)
408 malloc(sizeof *ia, M_IFADDR, M_NOWAIT |
410 if (ia == NULL) {
415 ifa = &ia->ia_ifa;
417 ifa->ifa_addr = (struct sockaddr *)&ia->ia_addr;
418 ifa->ifa_dstaddr = (struct sockaddr *)&ia->ia_dstaddr;
419 ifa->ifa_netmask = (struct sockaddr *)&ia->ia_sockmask;
421 ia->ia_sockmask.sin_len = 8;
422 ia->ia_sockmask.sin_family = AF_INET;
424 ia->ia_broadaddr.sin_len = sizeof(ia->ia_addr);
425 ia->ia_broadaddr.sin_family = AF_INET;
427 ia->ia_ifp = ifp;
435 TAILQ_INSERT_TAIL(&V_in_ifaddrhead, ia, ia_link);
445 if (ia == NULL) {
458 *((struct sockaddr_in *)&ifr->ifr_addr) = ia->ia_addr;
466 *((struct sockaddr_in *)&ifr->ifr_dstaddr) = ia->ia_broadaddr;
474 *((struct sockaddr_in *)&ifr->ifr_dstaddr) = ia->ia_dstaddr;
478 *((struct sockaddr_in *)&ifr->ifr_addr) = ia->ia_sockmask;
486 ia->ia_addr.sin_addr.s_addr)
498 in_ifscrub(ifp, ia, LLE_STATIC);
499 ia->ia_sockmask = ifra->ifra_mask;
500 ia->ia_sockmask.sin_family = AF_INET;
501 ia->ia_subnetmask =
502 ntohl(ia->ia_sockmask.sin_addr.s_addr);
507 in_ifscrub(ifp, ia, LLE_STATIC);
508 ia->ia_dstaddr = ifra->ifra_dstaddr;
512 error = in_ifinit(ifp, ia, &ifra->ifra_addr, maskIsNew,
519 ia->ia_broadaddr = ifra->ifra_broadaddr;
535 in_ifscrub(ifp, ia, LLE_STATIC);
543 in_ifadown(&ia->ia_ifa, 1);
552 if (ia->ia_ifa.ifa_carp)
553 (*carp_detach_p)(&ia->ia_ifa);
556 /* Re-check that ia is still part of the list. */
558 if (ifa == &ia->ia_ifa)
571 TAILQ_REMOVE(&ifp->if_addrhead, &ia->ia_ifa, ifa_link);
573 ifa_free(&ia->ia_ifa); /* if_addrhead */
576 TAILQ_REMOVE(&V_in_ifaddrhead, ia, ia_link);
578 LIST_REMOVE(ia, ia_hash);
597 ifa_free(&ia->ia_ifa); /* in_ifaddrhead */
599 if (ia != NULL)
600 ifa_free(&ia->ia_ifa);
689 struct in_ifaddr *ia;
734 ia = (struct in_ifaddr *)ifa;
738 bcopy(&ia->ia_addr, &iflr->addr, ia->ia_addr.sin_len);
741 bcopy(&ia->ia_dstaddr, &iflr->dstaddr,
742 ia->ia_dstaddr.sin_len);
747 in_mask2len(&ia->ia_sockmask.sin_addr);
761 bcopy(&ia->ia_addr, &ifra.ifra_addr,
762 ia->ia_addr.sin_len);
764 bcopy(&ia->ia_dstaddr, &ifra.ifra_dstaddr,
765 ia->ia_dstaddr.sin_len);
767 bcopy(&ia->ia_sockmask, &ifra.ifra_dstaddr,
768 ia->ia_sockmask.sin_len);
784 in_ifscrub(struct ifnet *ifp, struct in_ifaddr *ia, u_int flags)
787 in_scrubprefix(ia, flags);
795 in_ifinit(struct ifnet *ifp, struct in_ifaddr *ia, struct sockaddr_in *sin,
802 if (ia->ia_addr.sin_family == AF_INET)
803 LIST_REMOVE(ia, ia_hash);
804 ia->ia_addr = *sin;
805 LIST_INSERT_HEAD(INADDR_HASH(ia->ia_addr.sin_addr.s_addr),
806 ia, ia_hash);
811 error = (*carp_attach_p)(&ia->ia_ifa, vhid);
824 (error = (*ifp->if_ioctl)(ifp, SIOCSIFADDR, (caddr_t)ia)) != 0)
825 /* LIST_REMOVE(ia, ia_hash) is done in in_control */
834 ia->ia_subnetmask = IN_CLASSA_NET;
836 ia->ia_subnetmask = IN_CLASSB_NET;
838 ia->ia_subnetmask = IN_CLASSC_NET;
839 ia->ia_sockmask.sin_addr.s_addr = htonl(ia->ia_subnetmask);
841 ia->ia_subnet = i & ia->ia_subnetmask;
842 in_socktrim(&ia->ia_sockmask);
848 ia->ia_ifa.ifa_metric = ifp->if_metric;
850 if (ia->ia_subnetmask == IN_RFC3021_MASK)
851 ia->ia_broadaddr.sin_addr.s_addr = INADDR_BROADCAST;
853 ia->ia_broadaddr.sin_addr.s_addr =
854 htonl(ia->ia_subnet | ~ia->ia_subnetmask);
856 ia->ia_dstaddr = ia->ia_addr;
859 if (ia->ia_dstaddr.sin_family != AF_INET)
863 if (!vhid && (error = in_addprefix(ia, flags)) != 0)
866 if (ia->ia_addr.sin_addr.s_addr == INADDR_ANY)
870 ia->ia_dstaddr.sin_addr.s_addr == ia->ia_addr.sin_addr.s_addr)
880 *((struct sockaddr_in *)(&ia_ro.ro_dst)) = ia->ia_addr;
888 error = ifa_add_loopback_route((struct ifaddr *)ia,
889 (struct sockaddr *)&ia->ia_addr);
891 ia->ia_flags |= IFA_RTSELF;
909 struct in_ifaddr *ia;
924 TAILQ_FOREACH(ia, &V_in_ifaddrhead, ia_link) {
925 if (rtinitflags(ia)) {
926 p = ia->ia_dstaddr.sin_addr;
931 p = ia->ia_addr.sin_addr;
932 m = ia->ia_sockmask.sin_addr;
939 if (target->ia_ifp->if_fib != ia->ia_ifp->if_fib)
946 if (ia->ia_flags & IFA_ROUTE) {
948 if (ia->ia_addr.sin_addr.s_addr ==
988 struct in_ifaddr *ia;
1056 TAILQ_FOREACH(ia, &V_in_ifaddrhead, ia_link) {
1057 if (rtinitflags(ia)) {
1058 p = ia->ia_dstaddr.sin_addr;
1063 p = ia->ia_addr.sin_addr;
1064 m = ia->ia_sockmask.sin_addr;
1072 if ((ia->ia_ifp->if_flags & IFF_UP) == 0)
1080 if ((ia->ia_flags & IFA_ROUTE) == 0) {
1081 ifa_ref(&ia->ia_ifa);
1090 error = rtinit(&ia->ia_ifa, (int)RTM_ADD,
1091 rtinitflags(ia) | RTF_UP);
1093 ia->ia_flags |= IFA_ROUTE;
1097 ifa_free(&ia->ia_ifa);
1149 #define ia ((struct in_ifaddr *)ifa)
1152 (in.s_addr == ia->ia_broadaddr.sin_addr.s_addr ||
1157 (ia->ia_subnetmask != IN_RFC3021_MASK &&
1158 t == ia->ia_subnet)) &&
1164 ia->ia_subnetmask != (u_long)0xffffffff)
1167 #undef ia