summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2008-03-13 23:02:58 +0100
committerMichael Adam <obnox@samba.org>2008-03-13 23:08:25 +0100
commit21ea0edec8b70b87149a3e7a358d739f267b7c54 (patch)
treee4f389c621a23e6412fa84247d47076c17e26403
parentfd62e5688b4ced6568da1111f5a97bff0a54932e (diff)
downloadsamba-21ea0edec8b70b87149a3e7a358d739f267b7c54.tar.gz
samba-21ea0edec8b70b87149a3e7a358d739f267b7c54.tar.bz2
samba-21ea0edec8b70b87149a3e7a358d739f267b7c54.zip
Fix %I macro expansion for IPv4 mapped IPv6 addresses.
On some systems (linux e.g.), when listening on ipv6 and ipv4, addresses of ipv4 clients are printed as mapped ipv4 addresses by getnameinfo (e.g. ::ffff:127.0.0.1). This re-establishes the original behaviour of %I to expand to the plain ipv4 address for an ipv4 client. Michael (This used to be commit 0abc8863f87fe5d2473492797c010784cb086008)
-rw-r--r--source3/lib/substitute.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c
index 59b54c4dff..ce97a36188 100644
--- a/source3/lib/substitute.c
+++ b/source3/lib/substitute.c
@@ -597,10 +597,16 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
}
a_string = realloc_string_sub(a_string, "%D", r);
break;
- case 'I' :
+ case 'I' : {
+ int offset = 0;
+ client_addr(get_client_fd(), addr, sizeof(addr));
+ if (strnequal(addr,"::ffff:",7)) {
+ offset = 7;
+ }
a_string = realloc_string_sub(a_string, "%I",
- client_addr(get_client_fd(),addr, sizeof(addr)));
+ addr + offset);
break;
+ }
case 'i':
a_string = realloc_string_sub( a_string, "%i",
client_socket_addr(get_client_fd(), addr, sizeof(addr)) );