server type announcements modified to include the "role" of the server:
authorLuke Leighton <lkcl@samba.org>
Tue, 2 Feb 1999 19:53:10 +0000 (19:53 +0000)
committerLuke Leighton <lkcl@samba.org>
Tue, 2 Feb 1999 19:53:10 +0000 (19:53 +0000)
domain member, pdc, bdc.

source/param/loadparm.c
source/rpc_server/srv_srvsvc.c

index ff8ccff99b615f64b86631577234f71d642c6d7e..8f92af90a93ea6c5e2737d93e513ffc38d7dcd15 100644 (file)
@@ -2620,15 +2620,64 @@ char *volume_label(int snum)
 ********************************************************************/
 static void set_default_server_announce_type(void)
 {
-  default_server_announce = (SV_TYPE_WORKSTATION | SV_TYPE_SERVER |
-                              SV_TYPE_SERVER_UNIX | SV_TYPE_PRINTQ_SERVER);
-  if(lp_announce_as() == ANNOUNCE_AS_NT)
-    default_server_announce |= (SV_TYPE_SERVER_NT | SV_TYPE_NT);
-  else if(lp_announce_as() == ANNOUNCE_AS_WIN95)
-    default_server_announce |= SV_TYPE_WIN95_PLUS;
-  else if(lp_announce_as() == ANNOUNCE_AS_WFW)
-    default_server_announce |= SV_TYPE_WFW;
-  default_server_announce |= (lp_time_server() ? SV_TYPE_TIME_SOURCE : 0);
+       default_server_announce = 0;
+       default_server_announce |= SV_TYPE_WORKSTATION;
+       default_server_announce |= SV_TYPE_SERVER;
+       default_server_announce |= SV_TYPE_SERVER_UNIX;
+       default_server_announce |= SV_TYPE_PRINTQ_SERVER;
+
+       switch (lp_announce_as())
+       {
+               case ANNOUNCE_AS_NT:
+               {
+                       default_server_announce |= SV_TYPE_SERVER_NT;
+                       default_server_announce |= SV_TYPE_NT;
+                       break;
+               }
+               case ANNOUNCE_AS_WIN95:
+               {
+                       default_server_announce |= SV_TYPE_WIN95_PLUS;
+                       break;
+               }
+               case ANNOUNCE_AS_WFW:
+               {
+                       default_server_announce |= SV_TYPE_WFW;
+                       break;
+               }
+               default:
+               {
+                       break;
+               }
+       }
+
+       switch (lp_server_role())
+       {
+               case ROLE_DOMAIN_MEMBER:
+               {
+                       default_server_announce |= SV_TYPE_DOMAIN_MEMBER;
+                       break;
+               }
+               case ROLE_DOMAIN_PDC:
+               {
+                       default_server_announce |= SV_TYPE_DOMAIN_CTRL;
+                       break;
+               }
+               case ROLE_DOMAIN_BDC:
+               {
+                       default_server_announce |= SV_TYPE_DOMAIN_BAKCTRL;
+                       break;
+               }
+               case ROLE_DOMAIN_NONE:
+               default:
+               {
+                       break;
+               }
+       }
+
+       if (lp_time_server())
+       {
+               default_server_announce |= SV_TYPE_TIME_SOURCE;
+       }
 }
 
 
index c7aeee9b117ef25eb85481aa5a70ee1ce727a02b..dacef42121603e29a0b900beb0452da88700cff7 100644 (file)
@@ -865,9 +865,12 @@ static void srv_reply_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *q_n,
                case 102:
                {
                        make_srv_info_102(&ctr.srv.sv102,
-                                         500, global_myname, lp_serverstring(),
-                                         5, 4, /* major/minor version - NT 5.4 :-) */
-                                         0x4100b, /* browsing stuff SV_TYPE_XXXX */
+                                         500, /* platform id */
+                                         global_myname,
+                                         lp_serverstring(),
+                                         lp_major_announce_version(),
+                                         lp_minor_announce_version(),
+                                         lp_default_server_announce(),
                                          0xffffffff, /* users */
                                          0xf, /* disc */
                                          0, /* hidden */
@@ -880,9 +883,11 @@ static void srv_reply_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *q_n,
                case 101:
                {
                        make_srv_info_101(&ctr.srv.sv101,
-                                         500, global_myname,
-                                         5, 4, /* major/minor version - NT 5.4 :-) */
-                                         0x4100b, /* browsing stuff SV_TYPE_XXXX */
+                                         500, /* platform id */
+                                         global_myname,
+                                         lp_major_announce_version(),
+                                         lp_minor_announce_version(),
+                                         lp_default_server_announce(),
                                          lp_serverstring());
                        break;
                }