mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
r5212: added checking for receiving our own packets as broadcasts
(This used to be commit 290dbd8cdc
)
This commit is contained in:
parent
9eb33fc212
commit
1b27d0ce12
@ -40,6 +40,12 @@ static void nbtd_request_handler(struct nbt_name_socket *nbtsock,
|
||||
return;
|
||||
}
|
||||
|
||||
/* see if its from one of our own interfaces - if so, then ignore it */
|
||||
if (nbtd_self_packet(nbtsock, packet, src_address, src_port)) {
|
||||
DEBUG(10,("Ignoring self packet from %s:%d\n", 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:
|
||||
|
@ -36,3 +36,32 @@ void nbtd_bad_packet(struct nbt_name_packet *packet,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
see if an incoming packet is from one of our own interfaces
|
||||
*/
|
||||
BOOL nbtd_self_packet(struct nbt_name_socket *nbtsock,
|
||||
struct nbt_name_packet *packet,
|
||||
const char *src_address, int src_port)
|
||||
{
|
||||
struct nbt_interface *iface = talloc_get_type(nbtsock->incoming.private,
|
||||
struct nbt_interface);
|
||||
struct nbt_server *nbtsrv = iface->nbtsrv;
|
||||
|
||||
if (src_port != lp_nbt_port()) {
|
||||
return False;
|
||||
}
|
||||
|
||||
for (iface=nbtsrv->interfaces;iface;iface=iface->next) {
|
||||
if (strcmp(src_address, iface->ip_address) == 0) {
|
||||
return True;
|
||||
}
|
||||
}
|
||||
|
||||
if (nbtsrv->bcast_interface &&
|
||||
strcmp(src_address, nbtsrv->bcast_interface->ip_address) == 0) {
|
||||
return True;
|
||||
}
|
||||
|
||||
return False;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user