summaryrefslogtreecommitdiff
path: root/source3/nmbd/nmbd_subnetdb.c
diff options
context:
space:
mode:
authorChristopher R. Hertel <crh@samba.org>2000-07-19 05:32:43 +0000
committerChristopher R. Hertel <crh@samba.org>2000-07-19 05:32:43 +0000
commit3c9e410c340d53897a3f97243d8286812704f6c0 (patch)
tree4198a4ba079626201d4fec3ce29f680b65331596 /source3/nmbd/nmbd_subnetdb.c
parentb35f21fb3a19417e2aab82a573ff121a086b224c (diff)
downloadsamba-3c9e410c340d53897a3f97243d8286812704f6c0.tar.gz
samba-3c9e410c340d53897a3f97243d8286812704f6c0.tar.bz2
samba-3c9e410c340d53897a3f97243d8286812704f6c0.zip
Instead of handing back a string (which might be a DNS name or an IP
string), the wins_srv module now hands back a struct in_addr when it's called. It caches the IP address once it has been looked up. The IP is cleared (and must be looked up again) if the 'wins server' parameter is reread, or if the node is marked 'dead'. A dead node will not be re-tried for 10 minutes (per a #define in wins_srv.c). As it was, the code was reading the WINS server name or IP directly from lp_wins_server. That's okay, except that if the value was expressed as a name, then a DNS lookup would be done every time the client wanted to talk to the server. I still need to work out the implications of failover regarding the 'unicast subnet' list. Chris -)----- (This used to be commit 73aa188320fd3bf10b5dfc057323f40aff2c13bd)
Diffstat (limited to 'source3/nmbd/nmbd_subnetdb.c')
-rw-r--r--source3/nmbd/nmbd_subnetdb.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/source3/nmbd/nmbd_subnetdb.c b/source3/nmbd/nmbd_subnetdb.c
index 57f937148e..3bad3f9568 100644
--- a/source3/nmbd/nmbd_subnetdb.c
+++ b/source3/nmbd/nmbd_subnetdb.c
@@ -274,13 +274,13 @@ BOOL create_subnets(void)
*
* NOTE: I'm not sure of the implications of WINS server failover
* on this bit of code. Because of failover, the WINS
- * server address can change.
+ * server address can change. crh
*/
if(*lp_wins_server())
{
struct in_addr real_wins_ip;
- real_wins_ip = *interpret_addr2( wins_srv() );
+ real_wins_ip = wins_srv_ip();
if (!zero_ip(real_wins_ip))
{
@@ -288,9 +288,10 @@ BOOL create_subnets(void)
}
else
{
- /* The smb.conf's wins server parameter MUST be a host_name
- or an ip_address. */
- DEBUG(0,("invalid smb.conf parameter 'wins server'\n"));
+ /* wins_srv_ip() can return a zero IP if all servers are
+ * either down or incorrectly entered in smb.conf. crh
+ */
+ DEBUG(0,("No 'live' WINS servers found. Check 'wins server' parameter.\n"));
return False;
}
}
@@ -330,9 +331,9 @@ BOOL create_subnets(void)
if (lp_we_are_a_wins_server())
{
- if((wins_server_subnet = make_subnet("WINS_SERVER_SUBNET",
- WINS_SERVER_SUBNET,
- ipzero, ipzero, ipzero)) == NULL)
+ if( (wins_server_subnet = make_subnet( "WINS_SERVER_SUBNET",
+ WINS_SERVER_SUBNET,
+ ipzero, ipzero, ipzero )) == NULL )
return False;
}