Convert all uses of uint8/16/32 to _t in nmbd and the include file.
[samba.git] / source3 / nmbd / nmbd_incomingdgrams.c
index 75ab9419c2fddd21c9fdc135b9b6e9de24217b1d..b728c13e5fe000d2d0750cf74e05ce3b1716a4d3 100644 (file)
@@ -21,6 +21,8 @@
 */
 
 #include "includes.h"
+#include "../librpc/gen_ndr/svcctl.h"
+#include "nmbd/nmbd.h"
 
 extern bool found_lm_clients;
 
@@ -92,20 +94,18 @@ void tell_become_backup(void)
   Process an incoming host announcement packet.
 *******************************************************************/
 
-void process_host_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf)
+void process_host_announce(struct subnet_record *subrec, struct packet_struct *p, const char *buf)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        int ttl = IVAL(buf,1)/1000;
        unstring announce_name;
-       uint32 servertype = IVAL(buf,23);
+       uint32_t servertype = IVAL(buf,23);
        fstring comment;
        struct work_record *work;
        struct server_record *servrec;
        unstring work_name;
        unstring source_name;
 
-       START_PROFILE(host_announce);
-
        pull_ascii_fstring(comment, buf+31);
   
        pull_ascii_nstring(announce_name, sizeof(announce_name), buf+5);
@@ -141,7 +141,7 @@ void process_host_announce(struct subnet_record *subrec, struct packet_struct *p
         * to be our primary workgroup name.
         */
 
-       if(strequal(work_name, global_myname()))
+       if(strequal(work_name, lp_netbios_name()))
                unstrcpy(work_name,lp_workgroup());
 
        /*
@@ -169,7 +169,7 @@ void process_host_announce(struct subnet_record *subrec, struct packet_struct *p
                        /* Update the record. */
                        servrec->serv.type = servertype|SV_TYPE_LOCAL_LIST_ONLY;
                        update_server_ttl( servrec, ttl);
-                       fstrcpy(servrec->serv.comment,comment);
+                       strlcpy(servrec->serv.comment,comment,sizeof(servrec->serv.comment));
                }
        } else {
                /*
@@ -184,27 +184,24 @@ void process_host_announce(struct subnet_record *subrec, struct packet_struct *p
 
        subrec->work_changed = True;
 done:
-
-       END_PROFILE(host_announce);
+       return;
 }
 
 /*******************************************************************
   Process an incoming WORKGROUP announcement packet.
 *******************************************************************/
 
-void process_workgroup_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf)
+void process_workgroup_announce(struct subnet_record *subrec, struct packet_struct *p, const char *buf)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        int ttl = IVAL(buf,1)/1000;
        unstring workgroup_announce_name;
        unstring master_name;
-       uint32 servertype = IVAL(buf,23);
+       uint32_t servertype = IVAL(buf,23);
        struct work_record *work;
        unstring source_name;
        unstring dest_name;
 
-       START_PROFILE(workgroup_announce);
-
        pull_ascii_nstring(workgroup_announce_name,sizeof(workgroup_announce_name),buf+5);
        pull_ascii_nstring(master_name,sizeof(master_name),buf+31);
        pull_ascii_nstring(source_name,sizeof(source_name),dgram->source_name.name);
@@ -241,28 +238,25 @@ void process_workgroup_announce(struct subnet_record *subrec, struct packet_stru
        subrec->work_changed = True;
 
 done:
-
-       END_PROFILE(workgroup_announce);
+       return;
 }
 
 /*******************************************************************
   Process an incoming local master browser announcement packet.
 *******************************************************************/
 
-void process_local_master_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf)
+void process_local_master_announce(struct subnet_record *subrec, struct packet_struct *p, const char *buf)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        int ttl = IVAL(buf,1)/1000;
        unstring server_name;
-       uint32 servertype = IVAL(buf,23);
+       uint32_t servertype = IVAL(buf,23);
        fstring comment;
        unstring work_name;
        struct work_record *work = NULL;
        struct server_record *servrec;
        unstring source_name;
 
-       START_PROFILE(local_master_announce);
-
        pull_ascii_nstring(server_name,sizeof(server_name),buf+5);
        pull_ascii_fstring(comment, buf+31);
        pull_ascii_nstring(source_name, sizeof(source_name), dgram->source_name.name);
@@ -335,7 +329,7 @@ a local master browser for workgroup %s and we think we are master. Forcing elec
                        /* Update the record. */
                        servrec->serv.type = servertype|SV_TYPE_LOCAL_LIST_ONLY;
                        update_server_ttl(servrec, ttl);
-                       fstrcpy(servrec->serv.comment,comment);
+                       strlcpy(servrec->serv.comment,comment,sizeof(servrec->serv.comment));
                }
        
                set_workgroup_local_master_browser_name( work, server_name );
@@ -352,8 +346,7 @@ a local master browser for workgroup %s and we think we are master. Forcing elec
 
        subrec->work_changed = True;
 done:
-
-       END_PROFILE(local_master_announce);
+       return;
 }
 
 /*******************************************************************
@@ -364,14 +357,12 @@ done:
 ******************************************************************/
 
 void process_master_browser_announce(struct subnet_record *subrec, 
-                                     struct packet_struct *p,char *buf)
+                                     struct packet_struct *p,const char *buf)
 {
        unstring local_master_name;
        struct work_record *work;
        struct browse_cache_record *browrec;
 
-       START_PROFILE(master_browser_announce);
-
        pull_ascii_nstring(local_master_name,sizeof(local_master_name),buf);
   
        DEBUG(3,("process_master_browser_announce: Local master announce from %s IP %s.\n",
@@ -407,18 +398,17 @@ master - ignoring master announce.\n"));
        }
 
 done:
-
-       END_PROFILE(master_browser_announce);
+       return;
 }
 
 /*******************************************************************
   Process an incoming LanMan host announcement packet.
 *******************************************************************/
 
-void process_lm_host_announce(struct subnet_record *subrec, struct packet_struct *p, char *buf, int len)
+void process_lm_host_announce(struct subnet_record *subrec, struct packet_struct *p, const char *buf, int len)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
-       uint32 servertype = IVAL(buf,1);
+       uint32_t servertype = IVAL(buf,1);
        int osmajor=CVAL(buf,5);           /* major version of node software */
        int osminor=CVAL(buf,6);           /* minor version of node software */
        int ttl = SVAL(buf,7);
@@ -428,9 +418,8 @@ void process_lm_host_announce(struct subnet_record *subrec, struct packet_struct
        unstring work_name;
        unstring source_name;
        fstring comment;
-       char *s = get_safe_str_ptr(buf,len,buf,9);
+       char *s = get_safe_str_ptr(buf,len,discard_const_p(char, buf),9);
 
-       START_PROFILE(lm_host_announce);
        if (!s) {
                goto done;
        }
@@ -481,7 +470,7 @@ originate from OS/2 Warp client. Ignoring packet.\n"));
         * not needed in the LanMan announce code, but it won't hurt.
         */
 
-       if(strequal(work_name, global_myname()))
+       if(strequal(work_name, lp_netbios_name()))
                unstrcpy(work_name,lp_workgroup());
 
        /*
@@ -509,7 +498,7 @@ originate from OS/2 Warp client. Ignoring packet.\n"));
                        /* Update the record. */
                        servrec->serv.type = servertype|SV_TYPE_LOCAL_LIST_ONLY;
                        update_server_ttl( servrec, ttl);
-                       fstrcpy(servrec->serv.comment,comment);
+                       strlcpy(servrec->serv.comment,comment,sizeof(servrec->serv.comment));
                }
        } else {
                /*
@@ -526,8 +515,7 @@ originate from OS/2 Warp client. Ignoring packet.\n"));
        found_lm_clients = True;
 
 done:
-
-       END_PROFILE(lm_host_announce);
+       return;
 }
 
 /****************************************************************************
@@ -538,7 +526,7 @@ static void send_backup_list_response(struct subnet_record *subrec,
                                      struct work_record *work,
                                      struct nmb_name *send_to_name,
                                      unsigned char max_number_requested,
-                                     uint32 token, struct in_addr sendto_ip,
+                                     uint32_t token, struct in_addr sendto_ip,
                                      int port)
 {
        char outbuf[1024];
@@ -568,8 +556,11 @@ static void send_backup_list_response(struct subnet_record *subrec,
 
        /* We always return at least one name - our own. */
        count = 1;
-       unstrcpy(myname, global_myname());
-       strupper_m(myname);
+       unstrcpy(myname, lp_netbios_name());
+       if (!strupper_m(myname)) {
+               DEBUG(4,("strupper_m %s failed\n", myname));
+               return;
+       }
        myname[15]='\0';
        push_ascii(p, myname, sizeof(outbuf)-PTR_DIFF(p,outbuf)-1, STR_TERMINATE);
 
@@ -596,7 +587,7 @@ static void send_backup_list_response(struct subnet_record *subrec,
     if(count >= (unsigned int)max_number_requested)
       break;
 
-    if(strnequal(servrec->serv.name, global_myname(),15))
+    if(strnequal(servrec->serv.name, lp_netbios_name(),15))
       continue;
 
     if(!(servrec->serv.type & SV_TYPE_BACKUP_BROWSER))
@@ -622,7 +613,7 @@ static void send_backup_list_response(struct subnet_record *subrec,
 
        send_mailslot(True, BROWSE_MAILSLOT,
                outbuf,PTR_DIFF(p,outbuf),
-               global_myname(), 0, 
+               lp_netbios_name(), 0,
                send_to_namestr,0,
                sendto_ip, subrec->myip, port);
 }
@@ -638,17 +629,16 @@ static void send_backup_list_response(struct subnet_record *subrec,
 ********************************************************************/
 
 void process_get_backup_list_request(struct subnet_record *subrec,
-                                     struct packet_struct *p,char *buf)
+                                     struct packet_struct *p,const char *buf)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        struct work_record *work;
        unsigned char max_number_requested = CVAL(buf,0);
-       uint32 token = IVAL(buf,1); /* Sender's key index for the workgroup. */
+       uint32_t token = IVAL(buf,1); /* Sender's key index for the workgroup. */
        int name_type = dgram->dest_name.name_type;
        unstring workgroup_name;
        struct subnet_record *search_subrec = subrec;
 
-       START_PROFILE(get_backup_list);
        pull_ascii_nstring(workgroup_name, sizeof(workgroup_name), dgram->dest_name.name);
 
        DEBUG(3,("process_get_backup_list_request: request from %s IP %s to %s.\n",
@@ -706,8 +696,7 @@ and I am not a local master browser.\n", workgroup_name));
                        max_number_requested, token, p->ip, p->port);
 
 done:
-
-       END_PROFILE(get_backup_list);
+       return;
 }
 
 /*******************************************************************
@@ -721,14 +710,12 @@ done:
 ******************************************************************/
 
 void process_reset_browser(struct subnet_record *subrec,
-                                  struct packet_struct *p,char *buf)
+                                  struct packet_struct *p,const char *buf)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        int state = CVAL(buf,0);
        struct subnet_record *sr;
 
-       START_PROFILE(reset_browser);
-
        DEBUG(1,("process_reset_browser: received diagnostic browser reset \
 request from %s IP %s state=0x%X\n",
                nmb_namestr(&dgram->source_name), inet_ntoa(p->ip), state));
@@ -761,8 +748,6 @@ request from %s IP %s state=0x%X\n",
        /* Request to stop browsing altogether. */
        if (state & 0x4)
                DEBUG(1,("process_reset_browser: ignoring request to stop being a browser.\n"));
-
-       END_PROFILE(reset_browser);
 }
 
 /*******************************************************************
@@ -773,14 +758,12 @@ request from %s IP %s state=0x%X\n",
   announcement is needed soon.
 ******************************************************************/
 
-void process_announce_request(struct subnet_record *subrec, struct packet_struct *p, char *buf)
+void process_announce_request(struct subnet_record *subrec, struct packet_struct *p, const char *buf)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        struct work_record *work;
        unstring workgroup_name;
  
-       START_PROFILE(announce_request);
-
        pull_ascii_nstring(workgroup_name, sizeof(workgroup_name), dgram->dest_name.name);
        DEBUG(3,("process_announce_request: Announce request from %s IP %s to %s.\n",
                nmb_namestr(&dgram->source_name), inet_ntoa(p->ip),
@@ -801,8 +784,7 @@ void process_announce_request(struct subnet_record *subrec, struct packet_struct
 
        work->needannounce = True;
 done:
-
-       END_PROFILE(announce_request);
+       return;
 }
 
 /*******************************************************************
@@ -814,13 +796,11 @@ done:
   through the "lm announce" parameter in smb.conf)
 ******************************************************************/
 
-void process_lm_announce_request(struct subnet_record *subrec, struct packet_struct *p, char *buf, int len)
+void process_lm_announce_request(struct subnet_record *subrec, struct packet_struct *p, const char *buf, int len)
 {
        struct dgram_packet *dgram = &p->packet.dgram;
        unstring workgroup_name;
 
-       START_PROFILE(lm_announce_request);
-
        pull_ascii_nstring(workgroup_name, sizeof(workgroup_name), dgram->dest_name.name);
        DEBUG(3,("process_lm_announce_request: Announce request from %s IP %s to %s.\n",
                nmb_namestr(&dgram->source_name), inet_ntoa(p->ip),
@@ -842,6 +822,5 @@ void process_lm_announce_request(struct subnet_record *subrec, struct packet_str
        found_lm_clients = True;
 
 done:
-
-       END_PROFILE(lm_announce_request);
+       return;
 }