diff options
| author | Craig Rodrigues <rodrigc@FreeBSD.org> | 2005-08-12 02:38:20 +0000 |
|---|---|---|
| committer | Craig Rodrigues <rodrigc@FreeBSD.org> | 2005-08-12 02:38:20 +0000 |
| commit | eee9fe30782c111830a8a81a1c73f9c4f18abe8c (patch) | |
| tree | 9ac6dc9fef31109c7db73e189def2c1834b3a7a8 /sys/netinet | |
| parent | ac445fbab5265e30150f8ce02d5fcc3198d2e944 (diff) | |
Notes
Diffstat (limited to 'sys/netinet')
| -rw-r--r-- | sys/netinet/if_atm.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/netinet/if_atm.c b/sys/netinet/if_atm.c index 8093f9ae7174..d37a3908d7a1 100644 --- a/sys/netinet/if_atm.c +++ b/sys/netinet/if_atm.c @@ -144,6 +144,9 @@ atm_rtrequest(int req, struct rtentry *rt, struct rt_addrinfo *info) * Parse and verify the link level address as * an open request */ +#ifdef NATM + NATM_LOCK(); +#endif bzero(&op, sizeof(op)); addr = LLADDR(SDL(gate)); alen = SDL(gate)->sdl_alen; @@ -247,6 +250,9 @@ atm_rtrequest(int req, struct rtentry *rt, struct rt_addrinfo *info) SDL(gate)->sdl_type = rt->rt_ifp->if_type; SDL(gate)->sdl_index = rt->rt_ifp->if_index; +#ifdef NATM + NATM_UNLOCK(); +#endif break; failed: @@ -256,6 +262,7 @@ failed: rt->rt_llinfo = NULL; rt->rt_flags &= ~RTF_LLINFO; } + NATM_UNLOCK(); #endif /* mark as invalid. We cannot RTM_DELETE the route from * here, because the recursive call to rtrequest1 does @@ -269,10 +276,12 @@ failed: * tell native ATM we are done with this VC */ if (rt->rt_flags & RTF_LLINFO) { + NATM_LOCK(); npcb_free((struct natmpcb *)rt->rt_llinfo, NPCB_DESTROY); rt->rt_llinfo = NULL; rt->rt_flags &= ~RTF_LLINFO; + NATM_UNLOCK(); } #endif /* |
