struct nbt_name_packet *packet,
const char *src_address, int src_port)
{
+ struct nbtd_interface *iface = talloc_get_type(nbtsock->incoming.private,
+ struct nbtd_interface);
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
+
+ nbtsrv->stats.total_received++;
+
/* 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));
switch (packet->operation & NBT_OPCODE) {
case NBT_OPCODE_QUERY:
+ nbtsrv->stats.query_count++;
nbtd_request_query(nbtsock, packet, src_address, src_port);
break;
case NBT_OPCODE_REGISTER:
case NBT_OPCODE_REFRESH:
case NBT_OPCODE_REFRESH2:
+ nbtsrv->stats.register_count++;
nbtd_request_defense(nbtsock, packet, src_address, src_port);
break;
case NBT_OPCODE_RELEASE:
case NBT_OPCODE_MULTI_HOME_REG:
+ nbtsrv->stats.release_count++;
nbtd_winsserver_request(nbtsock, packet, src_address, src_port);
break;
{
struct nbt_name_packet *packet;
size_t num_addresses = str_list_length(addresses);
+ struct nbtd_interface *iface = talloc_get_type(nbtsock->incoming.private,
+ struct nbtd_interface);
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
int i;
if (num_addresses == 0) {
DEBUG(7,("Sending name query reply for %s at %s to %s:%d\n",
nbt_name_string(packet, name), addresses[0], src_address, src_port));
+ nbtsrv->stats.total_sent++;
nbt_name_reply_send(nbtsock, src_address, src_port, packet);
failed:
{
struct nbt_name_packet *packet;
struct nbt_name *name = &request_packet->questions[0].name;
+ struct nbtd_interface *iface = talloc_get_type(nbtsock->incoming.private,
+ struct nbtd_interface);
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
packet = talloc_zero(nbtsock, struct nbt_name_packet);
if (packet == NULL) return;
DEBUG(7,("Sending negative name query reply for %s to %s:%d\n",
nbt_name_string(packet, name), src_address, src_port));
+ nbtsrv->stats.total_sent++;
nbt_name_reply_send(nbtsock, src_address, src_port, packet);
failed:
{
struct nbt_name_packet *packet;
struct nbt_name *name = &request_packet->questions[0].name;
+ struct nbtd_interface *iface = talloc_get_type(nbtsock->incoming.private,
+ struct nbtd_interface);
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
packet = talloc_zero(nbtsock, struct nbt_name_packet);
if (packet == NULL) return;
rcode==0?"positive":"negative",
nbt_name_string(packet, name), src_address, src_port));
+ nbtsrv->stats.total_sent++;
nbt_name_reply_send(nbtsock, src_address, src_port, packet);
failed:
{
struct nbt_name_packet *packet;
struct nbt_name *name = &request_packet->questions[0].name;
+ struct nbtd_interface *iface = talloc_get_type(nbtsock->incoming.private,
+ struct nbtd_interface);
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
packet = talloc_zero(nbtsock, struct nbt_name_packet);
if (packet == NULL) return;
rcode==0?"positive":"negative",
nbt_name_string(packet, name), src_address, src_port));
+ nbtsrv->stats.total_sent++;
nbt_name_reply_send(nbtsock, src_address, src_port, packet);
failed:
{
struct nbt_name_packet *packet;
struct nbt_name *name = &request_packet->questions[0].name;
+ struct nbtd_interface *iface = talloc_get_type(nbtsock->incoming.private,
+ struct nbtd_interface);
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
packet = talloc_zero(nbtsock, struct nbt_name_packet);
if (packet == NULL) return;
DEBUG(7,("Sending WACK reply for %s to %s:%d\n",
nbt_name_string(packet, name), src_address, src_port));
+ nbtsrv->stats.total_sent++;
nbt_name_reply_send(nbtsock, src_address, src_port, packet);
failed:
struct nbtd_interface *iface = iname->iface;
struct nbt_name_register io;
struct nbt_name_request *req;
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
/* setup a single name register request. Notice that we don't
use a name refresh request, as Windows and Samba3 do not
io.in.timeout = 3;
io.in.retries = 0;
+ nbtsrv->stats.total_sent++;
req = nbt_name_register_send(iface->nbtsock, &io);
if (req == NULL) return;
const char *scope = lp_netbios_scope();
struct nbt_name_register_bcast io;
struct composite_context *req;
+ struct nbtd_server *nbtsrv = iface->nbtsrv;
iname = talloc(iface, struct nbtd_iface_name);
if (!iname) return;
io.in.nb_flags = nb_flags;
io.in.ttl = iname->ttl;
+ nbtsrv->stats.total_sent++;
req = nbt_name_register_bcast_send(iface->nbtsock, &io);
if (req == NULL) return;