summaryrefslogtreecommitdiff
path: root/source4/nbt_server/interfaces.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-02-04 01:55:50 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:31 -0500
commit9eb33fc21236942c4b518557be920d4208e6b168 (patch)
tree3b21825351052ea60adf067c673eceacabdc86d3 /source4/nbt_server/interfaces.c
parentbd22848ad80dbe10551129325a59114d9a612f91 (diff)
downloadsamba-9eb33fc21236942c4b518557be920d4208e6b168.tar.gz
samba-9eb33fc21236942c4b518557be920d4208e6b168.tar.bz2
samba-9eb33fc21236942c4b518557be920d4208e6b168.zip
r5211: added broadcast name defense against both registration and refresh
requests (This used to be commit 9eafe2cacaef64384febe6bb0938294f7c1ee6bf)
Diffstat (limited to 'source4/nbt_server/interfaces.c')
-rw-r--r--source4/nbt_server/interfaces.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/source4/nbt_server/interfaces.c b/source4/nbt_server/interfaces.c
index a9041706c6..9c26925b32 100644
--- a/source4/nbt_server/interfaces.c
+++ b/source4/nbt_server/interfaces.c
@@ -33,10 +33,23 @@ static void nbtd_request_handler(struct nbt_name_socket *nbtsock,
struct nbt_name_packet *packet,
const char *src_address, int src_port)
{
+ /* if its a WINS query then direct to our WINS server */
+ if ((packet->operation & NBT_FLAG_RECURSION_DESIRED) &&
+ !(packet->operation & NBT_FLAG_BROADCAST)) {
+ nbtd_query_wins(nbtsock, packet, src_address, src_port);
+ return;
+ }
+
+ /* the request is to us in our role as a B node */
switch (packet->operation & NBT_OPCODE) {
case NBT_OPCODE_QUERY:
nbtd_request_query(nbtsock, packet, src_address, src_port);
break;
+
+ case NBT_OPCODE_REGISTER:
+ case NBT_OPCODE_REFRESH:
+ nbtd_request_defense(nbtsock, packet, src_address, src_port);
+ break;
}
}