summaryrefslogtreecommitdiff
path: root/source4/libcli/nmblib.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-08-18 20:13:08 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:58:09 -0500
commit1129c7808354dc04f7725be505fd23c0bf11a29d (patch)
tree3396a6b9f6833eb9819345fbeea644d250deb448 /source4/libcli/nmblib.c
parent5f1f1e5e5c52ec8c453b5ea688f87004541cc5bd (diff)
downloadsamba-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.c29
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);
+}