} SRV_SHARE_INFO_2;
+/* SRV_SHARE_INFO_1005 */
+typedef struct share_info_1005_info
+{
+ uint32 dfs_root_flag;
+} SRV_SHARE_INFO_1005;
+
/* SRV_SHARE_INFO_CTR */
typedef struct srv_share_info_ctr_info
{
union {
SRV_SHARE_INFO_1 info1;
SRV_SHARE_INFO_2 info2;
-
+ SRV_SHARE_INFO_1005 info1005;
} share;
uint32 status;
#define SV_TYPE_SERVER_OSF 0x00100000
#define SV_TYPE_SERVER_VMS 0x00200000
#define SV_TYPE_WIN95_PLUS 0x00400000
+#define SV_TYPE_DFS_SERVER 0x00800000
#define SV_TYPE_ALTERNATE_XPORT 0x20000000
#define SV_TYPE_LOCAL_LIST_ONLY 0x40000000
#define SV_TYPE_DOMAIN_ENUM 0x80000000
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 |= (lp_host_msdfs() ? SV_TYPE_DFS_SERVER : 0);
}
return True;
}
+/*******************************************************************
+ Reads or writes a structure.
+********************************************************************/
+static BOOL srv_io_share_info1005(char* desc, SRV_SHARE_INFO_1005* sh1005,
+ prs_struct* ps, int depth)
+{
+ if(sh1005 == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "srv_io_share_info1005");
+ depth++;
+
+ if(!prs_align(ps))
+ return False;
+
+ if(!prs_uint32("dfs_root_flag", ps, depth, &sh1005->dfs_root_flag))
+ return False;
+
+ return True;
+}
+
/*******************************************************************
Reads or writes a structure.
********************************************************************/
return False;
break;
+ case 1005:
+ if(!srv_io_share_info1005("", &r_n->share.info1005,
+ ps, depth))
+ return False;
default:
- DEBUG(5,("%s no share info at switch_value %d\n",
+ DEBUG(5,("%s no share info at switch_value %d\n",
tab_depth(depth), r_n->switch_value));
break;
}
init_srv_share_info2_str(&sh2->info_2_str, net_name, remark, path, passwd);
}
+/***************************************************************************
+ Fill in a share info level 1005 structure.
+ ***************************************************************************/
+static void init_srv_share_info_1005(SRV_SHARE_INFO_1005* sh1005, int snum)
+{
+ sh1005->dfs_root_flag = 0;
+
+#ifdef MS_DFS
+ if(lp_host_msdfs() && *lp_dfsmap(snum) && lp_dfsmap_loaded(snum))
+ sh1005->dfs_root_flag = 3;
+#endif
+
+}
+
/*******************************************************************
Fill in a share info structure.
********************************************************************/
case 2:
init_srv_share_info_2(&r_n->share.info2, snum);
break;
+ case 1005:
+ init_srv_share_info_1005(&r_n->share.info1005, snum);
+ break;
default:
DEBUG(5,("init_srv_net_share_get_info: unsupported switch value %d\n", info_level));
status = 0xC0000000 | NT_STATUS_INVALID_INFO_CLASS;