]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netat/ddp_nbp.c
xnu-792.22.5.tar.gz
[apple/xnu.git] / bsd / netat / ddp_nbp.c
index 875d21c687cfaf57b300bc13e8c97112cac8eed1..7a1db804a430e8fa9f4c46e309eba68304760e79 100644 (file)
@@ -82,7 +82,6 @@ extern at_ifaddr_t *ifID_home;
 
 TAILQ_HEAD(name_registry, _nve_) name_registry;
 
-atlock_t       nve_lock;
 
 /* statics */
 static int             errno;
@@ -156,14 +155,12 @@ void nbp_shutdown()
        /* delete all NVE's and release buffers */
        register nve_entry_t    *nve_entry, *nve_next;
 
-       ATDISABLE(nve_lock_pri,NVE_LOCK);
-        for ((nve_entry = TAILQ_FIRST(&name_registry)); nve_entry; nve_entry = nve_next) {
-                nve_next = TAILQ_NEXT(nve_entry, nve_link);
+       for ((nve_entry = TAILQ_FIRST(&name_registry)); nve_entry; nve_entry = nve_next) {
+                       nve_next = TAILQ_NEXT(nve_entry, nve_link);
 
                 /* NB: nbp_delete_entry calls TAILQ_REMOVE */
                nbp_delete_entry(nve_entry);
        }
-       ATENABLE(nve_lock_pri,NVE_LOCK);
 
        if (lzones) {
                gbuf_freem(lzones);
@@ -439,7 +436,7 @@ void nbp_input(m, ifID)
                                   ("nbp_input: BRREQ: src changed to %d.%d.%d\n",
                                        ifID->ifThisNode.s_net,
                                        ifID->ifThisNode.s_node, ourSkt));
-                               nbp->tuple[0].enu_addr.net = ifID->ifThisNode.s_net;
+                               nbp->tuple[0].enu_addr.net = htons(ifID->ifThisNode.s_net);
                                nbp->tuple[0].enu_addr.node = ifID->ifThisNode.s_node;
                                nbp->tuple[0].enu_addr.socket = ourSkt; 
                                ddp->src_socket = NBP_SOCKET;
@@ -535,7 +532,7 @@ static      int     nbp_validate_n_hash (nbp_req, wild_ok, checkLocal)
 #ifdef COMMENTED_OUT
        {
                int net,node,skt;
-               net = tuple->enu_addr.net;
+               net = ntohs(tuple->enu_addr.net);
                node = tuple->enu_addr.node;
                skt = tuple->enu_addr.socket;
                dPrintf(D_M_NBP_LOW,D_L_USR4,
@@ -740,7 +737,6 @@ static      nve_entry_t *nbp_search_nve (nbp_req, ifID)
                                (u_int) nbp_req->response));
        }
 #endif /* NBP_DEBUG */
-       ATDISABLE(nve_lock_pri,NVE_LOCK);
        TAILQ_FOREACH(nve_entry, &name_registry, nve_link) {
                if ((nbp_req->nve.zone_hash) && 
                        ((nbp_req->nve.zone_hash != 
@@ -823,15 +819,11 @@ static    nve_entry_t *nbp_search_nve (nbp_req, ifID)
                if (nbp_req->func != NULL) {
                        if ((*(nbp_req->func))(nbp_req, nve_entry) != 0) {
                                /* errno expected to be set by func */
-                               ATENABLE(nve_lock_pri,NVE_LOCK);
                                return (NULL);
                        }
-               } else {
-                       ATENABLE(nve_lock_pri,NVE_LOCK);
+               } else
                        return (nve_entry);
-               }
        }
-       ATENABLE(nve_lock_pri,NVE_LOCK);
 
        errno = 0;
        return (NULL);
@@ -871,7 +863,9 @@ register nve_entry_t        *nve_entry;
         * tuple we want to write. Write it!
         */
        tuple = (at_nbptuple_t *)gbuf_wptr(nbp_req->response);
-       tuple->enu_addr = nve_entry->address;
+       tuple->enu_addr.net = htons(nve_entry->address.net);
+       tuple->enu_addr.node = nve_entry->address.node;
+       tuple->enu_addr.socket = nve_entry->address.socket;
        tuple->enu_enum = nve_entry->enumerator;
 
         /* tuple is in the compressed (no "filler") format */
@@ -992,7 +986,7 @@ register nbp_req_t  *nbp_req;
        case NBP_LKUP :
                ddp->dst_socket = nbp_req->nve.address.socket;
                ddp->dst_node = nbp_req->nve.address.node;
-               NET_ASSIGN(ddp->dst_net, nbp_req->nve.address.net);
+               NET_ASSIGN_NOSWAP(ddp->dst_net, nbp_req->nve.address.net);
                nbp->control = NBP_LKUP_REPLY;
                break;
        }
@@ -1069,10 +1063,8 @@ getNbpTableSize()
        register nve_entry_t *nve;
        register int i=0;
 
-       ATDISABLE(nve_lock_pri,NVE_LOCK);
        for (nve = TAILQ_FIRST(&name_registry); nve; nve = TAILQ_NEXT(nve, nve_link), i++)
                i++;
-       ATENABLE(nve_lock_pri,NVE_LOCK);
        return(i);
 }
 
@@ -1095,7 +1087,6 @@ getNbpTable(p, s, c)
        else
                nve = TAILQ_FIRST(&name_registry);
 
-       ATDISABLE(nve_lock_pri,NVE_LOCK);
        for ( ; nve && c ; nve = TAILQ_NEXT(nve, nve_link), p++,i++) {
                if (i>= s) {
                        p->nbpe_object = nve->object;
@@ -1103,7 +1094,6 @@ getNbpTable(p, s, c)
                        c--;
                }
        }
-       ATENABLE(nve_lock_pri,NVE_LOCK);
        if (nve) {
                next = nve;
                nextNo = i;
@@ -1343,7 +1333,6 @@ nve_entry_t *nbp_find_nve(nve)
 {
        register nve_entry_t    *nve_entry;
 
-       ATDISABLE(nve_lock_pri,NVE_LOCK);
        TAILQ_FOREACH(nve_entry, &name_registry, nve_link) {
                if (nve->zone_hash &&
                    ((nve->zone_hash != nve_entry->zone_hash) &&
@@ -1363,10 +1352,8 @@ nve_entry_t *nbp_find_nve(nve)
                        continue;
 
                /* Found a match! */
-               ATENABLE(nve_lock_pri,NVE_LOCK);
                return (nve_entry);
        }
-       ATENABLE(nve_lock_pri,NVE_LOCK);
 
        return (NULL);
 } /* nbp_find_nve */
@@ -1377,22 +1364,19 @@ static int nbp_enum_gen (nve_entry)
        register int            new_enum = 0;
        register nve_entry_t    *ne;
 
-       ATDISABLE(nve_lock_pri,NVE_LOCK);
 re_do:
        TAILQ_FOREACH(ne, &name_registry, nve_link) {
                if ((*(int *)&ne->address == *(int *)&nve_entry->address) &&
                        (ne->enumerator == new_enum)) {
-                       if (new_enum == 255) {
-                               ATENABLE(nve_lock_pri,NVE_LOCK);
+                       if (new_enum == 255)
                                return(EADDRNOTAVAIL);
-                       else {
+                       else {
                                new_enum++;
                                goto re_do;
                        }
                }
        }
 
-       ATENABLE(nve_lock_pri,NVE_LOCK);
        nve_entry->enumerator = new_enum;
        return (0);
 }
@@ -1445,9 +1429,7 @@ int nbp_new_nve_entry(nve_entry, ifID)
        new_entry->tag = tag;
        new_entry->pid =  proc_selfpid();
 
-       ATDISABLE(nve_lock_pri,NVE_LOCK);
        TAILQ_INSERT_TAIL(&name_registry, new_entry, nve_link);
-       ATENABLE(nve_lock_pri,NVE_LOCK);
        at_state.flags |= AT_ST_NBP_CHANGED;
 
 #ifdef NBP_DEBUG