diff options
-rw-r--r-- | source3/Makefile.in | 2 | ||||
-rw-r--r-- | source3/utils/net.c | 4 | ||||
-rw-r--r-- | source3/utils/net_lookup.c | 62 |
3 files changed, 66 insertions, 2 deletions
diff --git a/source3/Makefile.in b/source3/Makefile.in index 3fa516b48c..da1eb419f5 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -327,7 +327,7 @@ CLIENT_OBJ = client/client.o client/clitar.o \ NET_OBJ = utils/net.o utils/net_ads.o \ utils/net_rap.o utils/net_rpc.o \ - utils/net_rpc_join.o utils/net_time.o \ + utils/net_rpc_join.o utils/net_time.o utils/net_lookup.o \ $(LIBSMB_OBJ) $(LIBMSRPC_OBJ) $(RPC_PARSE_OBJ) $(PASSDB_OBJ) \ $(GROUPDB_OBJ) $(PARAM_OBJ) $(UBIQX_OBJ) $(LIB_OBJ) diff --git a/source3/utils/net.c b/source3/utils/net.c index 3f6e9268e4..a87f11b57f 100644 --- a/source3/utils/net.c +++ b/source3/utils/net.c @@ -268,7 +268,7 @@ static int help_usage(int argc, const char **argv) "\n"\ "Valid functions are:\n"\ " RPC RAP ADS FILE SHARE SESSION SERVER DOMAIN PRINTQ USER GROUP VALIDATE\n"\ -" GROUPMEMBER ADMIN SERVICE PASSWORD TIME\n"); +" GROUPMEMBER ADMIN SERVICE PASSWORD TIME LOOKUP\n"); return -1; } @@ -296,6 +296,7 @@ static int net_help(int argc, const char **argv) {"SERVICE", net_rap_service_usage}, {"PASSWORD", net_rap_password_usage}, {"TIME", net_time_usage}, + {"LOOKUP", net_lookup_usage}, {"HELP", help_usage}, {NULL, NULL}}; @@ -324,6 +325,7 @@ static struct functable net_func[] = { {"SERVICE", net_rap_service}, {"PASSWORD", net_rap_password}, {"TIME", net_time}, + {"LOOKUP", net_lookup}, {"HELP", net_help}, {NULL, NULL} diff --git a/source3/utils/net_lookup.c b/source3/utils/net_lookup.c new file mode 100644 index 0000000000..21f3eb033d --- /dev/null +++ b/source3/utils/net_lookup.c @@ -0,0 +1,62 @@ +/* + Samba Unix/Linux SMB client library + Version 3.0 + net lookup command + Copyright (C) 2001 Andrew Tridgell (tridge@samba.org) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include "includes.h" +#include "../utils/net.h" + +int net_lookup_usage(int argc, const char **argv) +{ + d_printf( +"net lookup host HOSTNAME <type>\n\tgives IP for a hostname\n\n"\ +"\n"); + return -1; +} + +/* lookup a hostname giving an IP */ +static int net_lookup_host(int argc, const char **argv) +{ + struct in_addr ip; + int name_type = 0x20; + + if (argc == 0) return net_lookup_usage(argc, argv); + if (argc > 1) name_type = strtol(argv[1], NULL, 0); + + if (!resolve_name(argv[0], &ip, name_type)) { + /* we deliberately use DEBUG() here to send it to stderr + so scripts aren't mucked up */ + DEBUG(0,("Didn't find %s#%02x\n", argv[0], name_type)); + return -1; + } + + d_printf("%s\n", inet_ntoa(ip)); + return 0; +} + + +/* lookup hosts or IP addresses using internal samba lookup fns */ +int net_lookup(int argc, const char **argv) +{ + struct functable func[] = { + {"HOST", net_lookup_host}, + {NULL, NULL} + }; + + return net_run_function(argc, argv, func, net_lookup_usage); +} |