1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

r5222: made the nbtd_self_packet() code more efficient

(This used to be commit 8fe477955d0e28c891281803d625d80cb78a51b0)
This commit is contained in:
Andrew Tridgell 2005-02-04 05:13:46 +00:00 committed by Gerald (Jerry) Carter
parent db4ba6e690
commit 6348a343de

View File

@ -38,7 +38,8 @@ void nbtd_bad_packet(struct nbt_name_packet *packet,
/*
see if an incoming packet is from one of our own interfaces
see if an incoming packet is a broadcast packet from one of our own
interfaces
*/
BOOL nbtd_self_packet(struct nbt_name_socket *nbtsock,
struct nbt_name_packet *packet,
@ -48,20 +49,29 @@ BOOL nbtd_self_packet(struct nbt_name_socket *nbtsock,
struct nbt_interface);
struct nbt_server *nbtsrv = iface->nbtsrv;
/* if its not a broadcast then its not considered a self packet */
if (!(packet->operation & NBT_FLAG_BROADCAST)) {
return False;
}
/* if its not from the nbt port, then it wasn't a broadcast from us */
if (src_port != lp_nbt_port()) {
return False;
}
/* this uses the fact that iface->nbtsock is our non-broadcast
listen address */
if (iface->nbtsock == nbtsock) {
return False;
}
/* we have to loop over our interface list, seeing if its from
one of our own interfaces */
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;
}