diff options
author | Jeremy Allison <jra@samba.org> | 1997-10-23 22:30:57 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1997-10-23 22:30:57 +0000 |
commit | abb255cfe674a39c6a42f5083af9c5facdbcca05 (patch) | |
tree | bccbf53d36ce62b7a0e23cbcf628a53850c2db95 /source3/namedbsubnet.c | |
parent | 5557ab3c007b79c132e9a2da16e41be7b13f1b39 (diff) | |
download | samba-abb255cfe674a39c6a42f5083af9c5facdbcca05.tar.gz samba-abb255cfe674a39c6a42f5083af9c5facdbcca05.tar.bz2 samba-abb255cfe674a39c6a42f5083af9c5facdbcca05.zip |
Big change to make nmbd code more readable/understandable.
Main change is removal of find_name_search() confusion.
This has been replaced with find_name_on_subnet() which
makes it explicit what is being searched.
Also changed wins_subnet to be wins_client_subnet in
preparation for splitting the wins subnet into client
and server pieces.
This is a big nmbd change and I'd appreciate any
bug reports.
Specific changes follow :
asyncdns.c:
Removed wins entry from add_netbios_entry(). This is now
explicit in the subnet_record parameter.
interface.c:
iface_bcast(), iface_nmask(), iface_ip() return the
default interface if none can be found. Made this
behavior explicit - some code in nmbd incorrectly
depended upon this (reply_name_status() for instance).
nameannounce.c:
find_name_search changes to find_name_on_subnet.
namebrowse.c:
wins_subnet renamed to wins_client_subnet.
namedbname.c:
find_name_search removed. find_name_on_subnet added.
add_netbios_entry - wins parameter removed.
namedbsubnet.c:
find_req_subnet removed - not explicit enough.
nameelect.c:
wins_subnet renamed to wins_client_subnet.
namepacket.c:
listening() simplified.
nameresp.c:
wins_subnet renamed to wins_client_subnet.
nameserv.c:
find_name_search moved to find_name_on_subnet.
nameserv.h:
FIND_XXX -> changed to FIND_SELF_NAME, FIND_ANY_NAME.
nameservreply.c:
find_name_search moved to find_name_on_subnet.
Debug entries changed.
nameservresp.c:
wins_subnet renamed to wins_client_subnet.
namework.c:
wins_subnet renamed to wins_client_subnet.
nmbd.c:
wins parameter removed from add_netbios_entry.
nmbsync:
wins_subnet renamed to wins_client_subnet.
proto.h: The usual.
server.c:
remove accepted fd from fd_set.
Jeremy (jallison@whistle.com)
(This used to be commit 2c97b33fc0b5ef181dbf51a50cb61074935165bf)
Diffstat (limited to 'source3/namedbsubnet.c')
-rw-r--r-- | source3/namedbsubnet.c | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/source3/namedbsubnet.c b/source3/namedbsubnet.c index 3597c32387..27c1a0470e 100644 --- a/source3/namedbsubnet.c +++ b/source3/namedbsubnet.c @@ -55,7 +55,7 @@ struct subnet_record *subnetlist = NULL; /* WINS subnet - keep this separate so enumeration code doesn't run onto it by mistake. */ -struct subnet_record *wins_subnet = NULL; +struct subnet_record *wins_client_subnet = NULL; extern uint16 nb_type; /* samba's NetBIOS name type */ @@ -83,50 +83,34 @@ static void add_subnet(struct subnet_record *d) /**************************************************************************** - find a subnet in the subnetlist - not including WINS. + find a subnet in the subnetlist that a given IP address could + match - not including WINS. Returns NULL if no match. **************************************************************************/ -struct subnet_record *find_subnet(struct in_addr bcast_ip) +struct subnet_record *find_subnet(struct in_addr ip) { - struct subnet_record *d; + struct subnet_record *d = NULL; /* search through subnet list for broadcast/netmask that matches the source ip address. */ for (d = FIRST_SUBNET; d; d = NEXT_SUBNET_EXCLUDING_WINS(d)) { - if (same_net(bcast_ip, d->bcast_ip, d->mask_ip)) - return d; + if (same_net(ip, d->bcast_ip, d->mask_ip)) + break; } - return (NULL); -} - - -/**************************************************************************** - finds the appropriate subnet structure. directed packets (non-bcast) are - assumed to come from a point-to-point (P or M node), and so the subnet we - return in this instance is the WINS 'pseudo-subnet' with ip 255.255.255.255 - ****************************************************************************/ -struct subnet_record *find_req_subnet(struct in_addr ip, BOOL bcast) -{ - if (bcast) - { - /* identify the subnet the broadcast request came from */ - return find_subnet(*iface_bcast(ip)); - } - /* Return the subnet with the pseudo-ip of 255.255.255.255 */ - return wins_subnet; + return d; } /**************************************************************************** find a subnet in the subnetlist - if the subnet is not found - then return the WINS subnet. + then return the WINS client subnet. **************************************************************************/ -struct subnet_record *find_subnet_all(struct in_addr bcast_ip) +struct subnet_record *find_subnet_all(struct in_addr ip) { - struct subnet_record *d = find_subnet(bcast_ip); + struct subnet_record *d = find_subnet(ip); if(!d) - return wins_subnet; + return wins_client_subnet; return d; } @@ -235,7 +219,7 @@ static struct subnet_record *add_subnet_entry(struct in_addr myip, return d; } if(ip_equal(bcast_ip, wins_ip)) - return wins_subnet; + return wins_client_subnet; return find_subnet(bcast_ip); } @@ -329,7 +313,7 @@ void add_my_subnets(char *group) if (lp_wins_support() || lp_wins_server()) { struct in_addr wins_nmask = ipzero; - wins_subnet = add_subnet_entry(ipzero, wins_ip, wins_nmask, group, create_subnets, False); + wins_client_subnet = add_subnet_entry(ipzero, wins_ip, wins_nmask, group, create_subnets, False); } /* Ensure we only create the subnets once. */ |