diff options
Diffstat (limited to 'source4/nbt_server/nbt_server.h')
-rw-r--r-- | source4/nbt_server/nbt_server.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/source4/nbt_server/nbt_server.h b/source4/nbt_server/nbt_server.h new file mode 100644 index 0000000..c80e5bf --- /dev/null +++ b/source4/nbt_server/nbt_server.h @@ -0,0 +1,94 @@ +/* + Unix SMB/CIFS implementation. + + NBT server structures + + Copyright (C) Andrew Tridgell 2005 + + 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 3 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, see <http://www.gnu.org/licenses/>. +*/ + +#include "../libcli/nbt/libnbt.h" +#include "libcli/wrepl/winsrepl.h" +#include "libcli/dgram/libdgram.h" +#include "librpc/gen_ndr/irpc.h" +#include "lib/messaging/irpc.h" + +/* + a list of our registered names on each interface +*/ +struct nbtd_iface_name { + struct nbtd_iface_name *next, *prev; + struct nbtd_interface *iface; + struct nbt_name name; + uint16_t nb_flags; + struct timeval registration_time; + uint32_t ttl; + + /* if registered with a wins server, then this lists the server being + used */ + const char *wins_server; +}; + +struct nbtd_wins_wack_state; + +/* a list of network interfaces we are listening on */ +struct nbtd_interface { + struct nbtd_interface *next, *prev; + struct nbtd_server *nbtsrv; + const char *ip_address; + const char *bcast_address; + const char *netmask; + struct nbt_name_socket *nbtsock; + struct nbt_dgram_socket *dgmsock; + struct nbtd_iface_name *names; + struct nbtd_wins_wack_state *wack_queue; +}; + + +/* + top level context structure for the nbt server +*/ +struct nbtd_server { + struct task_server *task; + + /* the list of local network interfaces */ + struct nbtd_interface *interfaces; + + /* broadcast interface used for receiving packets only */ + struct nbtd_interface *bcast_interface; + + /* wins client interface - used for registering and refreshing + our names with a WINS server */ + struct nbtd_interface *wins_interface; + + struct wins_server *winssrv; + + struct nbtd_statistics stats; + + struct ldb_context *sam_ctx; +}; + + + +/* check a condition on an incoming packet */ +#define NBTD_ASSERT_PACKET(packet, src, test) do { \ + if (!(test)) { \ + nbtd_bad_packet(packet, src, #test); \ + return; \ + } \ +} while (0) + +struct interface; +#include "nbt_server/nbt_server_proto.h" |