diff options
author | Jeremy Allison <jra@samba.org> | 2007-10-10 18:25:16 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2007-10-10 18:25:16 -0700 |
commit | 8e54530b52fd256137740107e9fdf000f00a7a30 (patch) | |
tree | f9ca56cc0b2eff78c3550c924c79ee4ca0666fd2 /source3/nmbd/nmbd_processlogon.c | |
parent | 0ec55a246238b6cfb3727942c20cd55a16ab4d4a (diff) | |
download | samba-8e54530b52fd256137740107e9fdf000f00a7a30.tar.gz samba-8e54530b52fd256137740107e9fdf000f00a7a30.tar.bz2 samba-8e54530b52fd256137740107e9fdf000f00a7a30.zip |
Add start of IPv6 implementation. Currently most of this is avoiding
IPv6 in winbindd, but moves most of the socket functions that were
wrongly in lib/util.c into lib/util_sock.c and provides generic
IPv4/6 independent versions of most things. Still lots of work
to do, but now I can see how I'll fix the access check code.
Nasty part that remains is the name resolution code which is
used to returning arrays of in_addr structs.
Jeremy.
(This used to be commit 3f6bd0e1ec5cc6670f3d08f76fc2cd94c9cd1a08)
Diffstat (limited to 'source3/nmbd/nmbd_processlogon.c')
-rw-r--r-- | source3/nmbd/nmbd_processlogon.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/source3/nmbd/nmbd_processlogon.c b/source3/nmbd/nmbd_processlogon.c index abac2ac776..4b5fe28d4e 100644 --- a/source3/nmbd/nmbd_processlogon.c +++ b/source3/nmbd/nmbd_processlogon.c @@ -54,6 +54,19 @@ void process_logon_packet(struct packet_struct *p, char *buf,int len, pstring ascuser; char *unicomp; /* Unicode computer name. */ size_t size; + struct sockaddr_storage ss; + const struct sockaddr_storage *pss; + struct in_addr ip; + + in_addr_to_sockaddr_storage(&ss, p->ip); + pss = iface_ip(&ss); + if (!pss) { + DEBUG(5,("process_logon_packet:can't find outgoing interface " + "for packet from IP %s\n", + inet_ntoa(p->ip) )); + return; + } + ip = ((struct sockaddr_in *)pss)->sin_addr; memset(outbuf, 0, sizeof(outbuf)); @@ -127,7 +140,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) )); global_myname(), 0x0, mach_str, dgram->source_name.name_type, - p->ip, *iface_ip(p->ip), p->port); + p->ip, ip, p->port); break; } @@ -258,7 +271,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n", global_myname(), 0x0, source_name, dgram->source_name.name_type, - p->ip, *iface_ip(p->ip), p->port); + p->ip, ip, p->port); return; } @@ -543,7 +556,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n", SIVAL(q, 0, 0x00000002); q += 4; /* unknown */ - SIVAL(q, 0, (iface_ip(p->ip))->s_addr); + SIVAL(q, 0, ntohl(ip.s_addr)); q += 4; SIVAL(q, 0, 0x00000000); q += 4; /* unknown */ @@ -573,7 +586,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n", global_myname(), 0x0, source_name, dgram->source_name.name_type, - p->ip, *iface_ip(p->ip), p->port); + p->ip, ip, p->port); break; } |