diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-08-18 20:13:08 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:58:09 -0500 |
commit | 1129c7808354dc04f7725be505fd23c0bf11a29d (patch) | |
tree | 3396a6b9f6833eb9819345fbeea644d250deb448 /source4/libcli/nmblib.c | |
parent | 5f1f1e5e5c52ec8c453b5ea688f87004541cc5bd (diff) | |
download | samba-1129c7808354dc04f7725be505fd23c0bf11a29d.tar.gz samba-1129c7808354dc04f7725be505fd23c0bf11a29d.tar.bz2 samba-1129c7808354dc04f7725be505fd23c0bf11a29d.zip |
r1897: added a choose_called_name() function that allows us to more sanely
handle connections using the IP as the server name, while not trying
for NBT name resolution on names like "192" and "192.168.1.2".
also removed the ip address argument to smbcli_socket_connect() as it
isn't used and doesn't really make sense.
(This used to be commit 2ce4028842556328da4da0de9bee942bed02cc62)
Diffstat (limited to 'source4/libcli/nmblib.c')
-rw-r--r-- | source4/libcli/nmblib.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/source4/libcli/nmblib.c b/source4/libcli/nmblib.c index e05eb7966e..5eeec48003 100644 --- a/source4/libcli/nmblib.c +++ b/source4/libcli/nmblib.c @@ -1285,3 +1285,32 @@ int name_len(char *s1) return(len); } /* name_len */ + + +/* + choose a name to use when calling a server in a NBT session request. + we use heuristics to see if the name we have been given is a IP + address, or a too-long name. If it is then use *SMBSERVER, or a + truncated name +*/ +void choose_called_name(struct nmb_name *n, const char *name, int type) +{ + if (is_ipaddress(name)) { + make_nmb_name(n, "*SMBSERVER", type); + return; + } + if (strlen(name) > 16) { + const char *p = strchr(name, '.'); + char name2[17]; + if (p - name > 16) { + make_nmb_name(n, "*SMBSERVER", type); + return; + } + strlcpy(name2, name, 1+(p-name)); + make_nmb_name(n, name2, type); + return; + } + + /* looks OK */ + make_nmb_name(n, name, type); +} |