r8285: generate some real stats in the nbt server for the irpc client code to look at
authorAndrew Tridgell <tridge@samba.org>
Sun, 10 Jul 2005 08:41:02 +0000 (08:41 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:19:31 +0000 (13:19 -0500)
(This used to be commit 73643884a3c76de5a738a28054a168fdb008a9f8)

source4/nbt_server/interfaces.c
source4/nbt_server/nodestatus.c
source4/nbt_server/packet.c
source4/nbt_server/register.c

index b77e692e105f87b92c5ab2879fdb3681aa7aeeed..aa22e5d4ad25df1dd0839104362b90ee0e44926a 100644 (file)
@@ -34,6 +34,12 @@ static void nbtd_request_handler(struct nbt_name_socket *nbtsock,
                                 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));
@@ -42,17 +48,20 @@ static void nbtd_request_handler(struct nbt_name_socket *nbtsock,
 
        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;
 
index 7f8e6d4a24ac38ddd6214aee243fdd2dbc3af3c5..daae7b8a78496655a8edf6fc5bc98284695793f6 100644 (file)
@@ -37,6 +37,7 @@ static void nbtd_node_status_reply(struct nbt_name_socket *nbtsock,
        struct nbt_name_packet *packet;
        uint32_t name_count;
        struct nbtd_iface_name *iname;
+       struct nbtd_server *nbtsrv = iface->nbtsrv;
        
        /* work out how many names to send */
        name_count = 0;
@@ -85,6 +86,7 @@ static void nbtd_node_status_reply(struct nbt_name_socket *nbtsock,
        DEBUG(7,("Sending node status 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:
index 6e14fef06c6d3f5256bfa4d8f329076214a71465..c1e0c4411bfb516548b0b36826139d3b9c4bce3c 100644 (file)
@@ -89,6 +89,9 @@ void nbtd_name_query_reply(struct nbt_name_socket *nbtsock,
 {
        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) {
@@ -131,6 +134,7 @@ void nbtd_name_query_reply(struct nbt_name_socket *nbtsock,
        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:
@@ -147,6 +151,9 @@ void nbtd_negative_name_query_reply(struct nbt_name_socket *nbtsock,
 {
        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;
@@ -171,6 +178,7 @@ void nbtd_negative_name_query_reply(struct nbt_name_socket *nbtsock,
        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:
@@ -187,6 +195,9 @@ void nbtd_name_registration_reply(struct nbt_name_socket *nbtsock,
 {
        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;
@@ -214,6 +225,7 @@ void nbtd_name_registration_reply(struct nbt_name_socket *nbtsock,
                 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:
@@ -231,6 +243,9 @@ void nbtd_name_release_reply(struct nbt_name_socket *nbtsock,
 {
        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;
@@ -256,6 +271,7 @@ void nbtd_name_release_reply(struct nbt_name_socket *nbtsock,
                 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:
@@ -273,6 +289,9 @@ void nbtd_wack_reply(struct nbt_name_socket *nbtsock,
 {
        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;
@@ -299,6 +318,7 @@ void nbtd_wack_reply(struct nbt_name_socket *nbtsock,
        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:
index cd39ef47691110d83e82bde289722080d6f5681e..0d0526b94e67908789fb03250c6669ddb1e54ed1 100644 (file)
@@ -83,6 +83,7 @@ static void name_refresh_handler(struct event_context *ev, struct timed_event *t
        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
@@ -100,6 +101,7 @@ static void name_refresh_handler(struct event_context *ev, struct timed_event *t
        io.in.timeout         = 3;
        io.in.retries         = 0;
 
+       nbtsrv->stats.total_sent++;
        req = nbt_name_register_send(iface->nbtsock, &io);
        if (req == NULL) return;
 
@@ -169,6 +171,7 @@ static void nbtd_register_name_iface(struct nbtd_interface *iface,
        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;
@@ -209,6 +212,7 @@ static void nbtd_register_name_iface(struct nbtd_interface *iface,
        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;