diff options
Diffstat (limited to 'source3/nmbd/nmbd_lmhosts.c')
-rw-r--r-- | source3/nmbd/nmbd_lmhosts.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/source3/nmbd/nmbd_lmhosts.c b/source3/nmbd/nmbd_lmhosts.c index 8dda58e352..51e4858f32 100644 --- a/source3/nmbd/nmbd_lmhosts.c +++ b/source3/nmbd/nmbd_lmhosts.c @@ -32,7 +32,7 @@ void load_lmhosts_file(const char *fname) { pstring name; int name_type; - struct in_addr ipaddr; + struct sockaddr_storage ss; XFILE *fp = startlmhosts( fname ); if (!fp) { @@ -41,10 +41,17 @@ void load_lmhosts_file(const char *fname) return; } - while (getlmhostsent(fp, name, &name_type, &ipaddr) ) { + while (getlmhostsent(fp, name, &name_type, &ss) ) { + struct in_addr ipaddr; struct subnet_record *subrec = NULL; enum name_source source = LMHOSTS_NAME; + if (ss.ss_family != AF_INET) { + continue; + } + + ipaddr = ((struct sockaddr_in *)&ss)->sin_addr; + /* We find a relevent subnet to put this entry on, then add it. */ /* Go through all the broadcast subnets and see if the mask matches. */ for (subrec = FIRST_SUBNET; subrec ; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec)) { |