summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/param/loadparm.c67
-rw-r--r--source3/rpc_server/srv_srvsvc.c17
2 files changed, 69 insertions, 15 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index ff8ccff99b..8f92af90a9 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -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;
+ }
}
diff --git a/source3/rpc_server/srv_srvsvc.c b/source3/rpc_server/srv_srvsvc.c
index c7aeee9b11..dacef42121 100644
--- a/source3/rpc_server/srv_srvsvc.c
+++ b/source3/rpc_server/srv_srvsvc.c
@@ -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;
}