diff options
-rw-r--r-- | source4/include/includes.h | 10 | ||||
-rw-r--r-- | source4/libcli/nbt/namequery.c | 2 | ||||
-rw-r--r-- | source4/libcli/nbt/namerefresh.c | 4 | ||||
-rw-r--r-- | source4/libcli/nbt/nameregister.c | 4 | ||||
-rw-r--r-- | source4/libcli/nbt/nbtsocket.c | 4 | ||||
-rw-r--r-- | source4/librpc/config.mk | 2 | ||||
-rw-r--r-- | source4/librpc/idl/misc.idl | 4 | ||||
-rw-r--r-- | source4/librpc/idl/nbt.idl | 2 | ||||
-rw-r--r-- | source4/librpc/ndr/ndr_misc.c | 10 | ||||
-rw-r--r-- | source4/nbt_server/query.c | 2 | ||||
-rw-r--r-- | source4/nbt_server/winsserver.c | 3 |
11 files changed, 30 insertions, 17 deletions
diff --git a/source4/include/includes.h b/source4/include/includes.h index ce24525158..a185669abd 100644 --- a/source4/include/includes.h +++ b/source4/include/includes.h @@ -91,14 +91,6 @@ typedef int BOOL; -/* - we use struct ipv4_addr to avoid having to include all the - system networking headers everywhere -*/ -struct ipv4_addr { - uint32_t addr; -}; - #ifndef HAVE_STRERROR extern char *sys_errlist[]; #define strerror(i) sys_errlist[i] @@ -126,7 +118,6 @@ extern int errno; #include "pstring.h" #include "smb_macros.h" #include "smb.h" -#include "ads.h" #include "lib/socket/socket.h" #include "libcli/ldap/ldap.h" #include "byteorder.h" @@ -142,6 +133,7 @@ extern int errno; #include "ntvfs/ntvfs.h" #include "cli_context.h" #include "nsswitch/winbind_client.h" +#include "ads.h" #define malloc_p(type) (type *)malloc(sizeof(type)) #define malloc_array_p(type, count) (type *)realloc_array(NULL, sizeof(type), count) diff --git a/source4/libcli/nbt/namequery.c b/source4/libcli/nbt/namequery.c index 36fbfc8dd0..d77482fc2b 100644 --- a/source4/libcli/nbt/namequery.c +++ b/source4/libcli/nbt/namequery.c @@ -102,7 +102,7 @@ NTSTATUS nbt_name_query_recv(struct nbt_name_request *req, } for (i=0;i<io->out.num_addrs;i++) { - in.s_addr = htonl(packet->answers[0].rdata.netbios.addresses[i].ipaddr); + in.s_addr = htonl(packet->answers[0].rdata.netbios.addresses[i].ipaddr.addr); addr = inet_ntoa(in); if (addr == NULL) { talloc_free(req); diff --git a/source4/libcli/nbt/namerefresh.c b/source4/libcli/nbt/namerefresh.c index 47fcae4f7c..c121d9c920 100644 --- a/source4/libcli/nbt/namerefresh.c +++ b/source4/libcli/nbt/namerefresh.c @@ -64,7 +64,7 @@ struct nbt_name_request *nbt_name_refresh_send(struct nbt_name_socket *nbtsock, struct nbt_rdata_address, 1); if (packet->additional[0].rdata.netbios.addresses == NULL) goto failed; packet->additional[0].rdata.netbios.addresses[0].nb_flags = io->in.nb_flags; - packet->additional[0].rdata.netbios.addresses[0].ipaddr = htonl(inet_addr(io->in.address)); + packet->additional[0].rdata.netbios.addresses[0].ipaddr.addr = htonl(inet_addr(io->in.address)); req = nbt_name_request_send(nbtsock, io->in.dest_addr, lp_nbt_port(), packet, timeval_current_ofs(io->in.timeout, 0), False); @@ -112,7 +112,7 @@ NTSTATUS nbt_name_refresh_recv(struct nbt_name_request *req, talloc_free(req); return NT_STATUS_INVALID_NETWORK_RESPONSE; } - in.s_addr = htonl(packet->answers[0].rdata.netbios.addresses[0].ipaddr); + in.s_addr = htonl(packet->answers[0].rdata.netbios.addresses[0].ipaddr.addr); addr = inet_ntoa(in); if (addr == NULL) { talloc_free(req); diff --git a/source4/libcli/nbt/nameregister.c b/source4/libcli/nbt/nameregister.c index 7e0134c283..7bed37cf78 100644 --- a/source4/libcli/nbt/nameregister.c +++ b/source4/libcli/nbt/nameregister.c @@ -67,7 +67,7 @@ struct nbt_name_request *nbt_name_register_send(struct nbt_name_socket *nbtsock, struct nbt_rdata_address, 1); if (packet->additional[0].rdata.netbios.addresses == NULL) goto failed; packet->additional[0].rdata.netbios.addresses[0].nb_flags = io->in.nb_flags; - packet->additional[0].rdata.netbios.addresses[0].ipaddr = htonl(inet_addr(io->in.address)); + packet->additional[0].rdata.netbios.addresses[0].ipaddr.addr = htonl(inet_addr(io->in.address)); req = nbt_name_request_send(nbtsock, io->in.dest_addr, lp_nbt_port(), packet, timeval_current_ofs(io->in.timeout, 0), False); @@ -115,7 +115,7 @@ NTSTATUS nbt_name_register_recv(struct nbt_name_request *req, talloc_free(req); return NT_STATUS_INVALID_NETWORK_RESPONSE; } - in.s_addr = htonl(packet->answers[0].rdata.netbios.addresses[0].ipaddr); + in.s_addr = htonl(packet->answers[0].rdata.netbios.addresses[0].ipaddr.addr); addr = inet_ntoa(in); if (addr == NULL) { talloc_free(req); diff --git a/source4/libcli/nbt/nbtsocket.c b/source4/libcli/nbt/nbtsocket.c index 3f16bf6921..3d1397e019 100644 --- a/source4/libcli/nbt/nbtsocket.c +++ b/source4/libcli/nbt/nbtsocket.c @@ -390,6 +390,10 @@ NTSTATUS nbt_name_reply_send(struct nbt_name_socket *nbtsock, talloc_set_destructor(req, nbt_name_request_destructor); + if (DEBUGLVL(10)) { + NDR_PRINT_DEBUG(nbt_name_packet, request); + } + status = ndr_push_struct_blob(&req->encoded, req, request, (ndr_push_flags_fn_t)ndr_push_nbt_name_packet); if (!NT_STATUS_IS_OK(status)) { diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk index 75582c2adc..3f0dea9ce1 100644 --- a/source4/librpc/config.mk +++ b/source4/librpc/config.mk @@ -291,7 +291,7 @@ REQUIRED_SUBSYSTEMS = LIBNDR INIT_OBJ_FILES = librpc/gen_ndr/ndr_nbt.o INIT_FUNCTION = dcerpc_nbt_init NOPROTO = YES -REQUIRED_SUBSYSTEMS = LIBNDR +REQUIRED_SUBSYSTEMS = LIBNDR NDR_MISC [SUBSYSTEM::NDR_ALL] diff --git a/source4/librpc/idl/misc.idl b/source4/librpc/idl/misc.idl index 13306b6876..4b69d1089b 100644 --- a/source4/librpc/idl/misc.idl +++ b/source4/librpc/idl/misc.idl @@ -6,6 +6,10 @@ interface misc { + typedef [public,noprint] struct { + uint32 addr; + } ipv4_addr; + typedef [public,noprint,gensize] struct { uint32 time_low; uint16 time_mid; diff --git a/source4/librpc/idl/nbt.idl b/source4/librpc/idl/nbt.idl index caca7fa336..9dc42fccba 100644 --- a/source4/librpc/idl/nbt.idl +++ b/source4/librpc/idl/nbt.idl @@ -102,7 +102,7 @@ interface nbt typedef struct { nb_flags nb_flags; - uint32 ipaddr; + ipv4_addr ipaddr; } nbt_rdata_address; typedef struct { diff --git a/source4/librpc/ndr/ndr_misc.c b/source4/librpc/ndr/ndr_misc.c index a538dd3033..b9edc0ae9c 100644 --- a/source4/librpc/ndr/ndr_misc.c +++ b/source4/librpc/ndr/ndr_misc.c @@ -24,6 +24,16 @@ */ #include "includes.h" +#include "system/network.h" + +void ndr_print_ipv4_addr(struct ndr_print *ndr, const char *name, const struct ipv4_addr *_ip) +{ + struct ipv4_addr ip; + + ip.addr = htonl(_ip->addr); + + ndr->print(ndr, "%-25s: %s", name, sys_inet_ntoa(ip)); +} /* build a GUID from a string diff --git a/source4/nbt_server/query.c b/source4/nbt_server/query.c index 859a9c7f26..9b9d1e29b9 100644 --- a/source4/nbt_server/query.c +++ b/source4/nbt_server/query.c @@ -60,7 +60,7 @@ static void nbt_name_query_reply(struct nbt_name_socket *nbtsock, struct nbt_rdata_address, 1); if (packet->answers[0].rdata.netbios.addresses == NULL) goto failed; packet->answers[0].rdata.netbios.addresses[0].nb_flags = nb_flags; - packet->answers[0].rdata.netbios.addresses[0].ipaddr = htonl(inet_addr(address)); + packet->answers[0].rdata.netbios.addresses[0].ipaddr.addr = htonl(inet_addr(address)); DEBUG(7,("Sending name query reply for %s<%02x> at %s to %s:%d\n", name->name, name->type, src_address, address, src_port)); diff --git a/source4/nbt_server/winsserver.c b/source4/nbt_server/winsserver.c index a659772cb3..7810bebd24 100644 --- a/source4/nbt_server/winsserver.c +++ b/source4/nbt_server/winsserver.c @@ -32,4 +32,7 @@ void nbt_query_wins(struct nbt_name_socket *nbtsock, const char *src_address, int src_port) { DEBUG(0,("WINS query from %s\n", src_address)); + if (DEBUGLVL(10)) { + NDR_PRINT_DEBUG(nbt_name_packet, packet); + } } |