install: install_headers install_objs $(CONF_DLLFILE) \
$(EXEDIR)\klog.exe \
$(EXEDIR)\tokens.exe \
- $(EXEDIR)\unlog.exe $(EXEDIR)\afsd.exe $(EXEDIR)\afsd_service.exe \
+ $(EXEDIR)\unlog.exe \
+ $(EXEDIR)\afsd_service.exe \
$(EXEDIR)\fs.exe \
$(EXEDIR)\symlink.exe \
$(EXEDIR)\afsdacl.exe \
install9X: install_headers $(CONF_DLLFILE) \
$(EXEDIR)\klog.exe \
$(EXEDIR)\tokens.exe \
- $(EXEDIR)\unlog.exe $(EXEDIR)\afsd_service.exe \
+ $(EXEDIR)\unlog.exe $(EXEDIR)\afsd.exe $(EXEDIR)\afsd_service.exe \
$(EXEDIR)\fs.exe $(EXEDIR)\symlink.exe \
$(LOGON_DLLFILE) $(LOG95_DLLFILE) \
$(EXEDIR)\afsshare.exe \
AFSD_EXELIBS =\
$(DESTDIR)\lib\libosi.lib \
$(DESTDIR)\lib\afsrpc.lib \
- $(DESTDIR)\lib\afsrx.lib \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\afs\mtafsvldb.lib \
$(DESTDIR)\lib\afs\mtafsint.lib \
DWORD cacheSize;
long logChunkSize;
DWORD stats;
+ DWORD rx_enable_peer_stats = 0;
+ DWORD rx_enable_process_stats = 0;
long traceBufSize;
long maxcpus;
long ltt, ltto;
if (rx_mtu != -1)
afsi_log("RX maximum MTU is %d", rx_mtu);
+ dummyLen = sizeof(rx_enable_peer_stats);
+ code = RegQueryValueEx(parmKey, "RxEnablePeerStats", NULL, NULL,
+ (BYTE *) &rx_enable_peer_stats, &dummyLen);
+ if (code != ERROR_SUCCESS) {
+ rx_enable_peer_stats = 0;
+ }
+ if (rx_enable_peer_stats)
+ afsi_log("RX Peer Statistics gathering is enabled");
+
+ dummyLen = sizeof(rx_enable_process_stats);
+ code = RegQueryValueEx(parmKey, "RxEnableProcessStats", NULL, NULL,
+ (BYTE *) &rx_enable_process_stats, &dummyLen);
+ if (code != ERROR_SUCCESS) {
+ rx_enable_process_stats = 0;
+ }
+ if (rx_enable_process_stats)
+ afsi_log("RX Process Statistics gathering is enabled");
+
dummyLen = sizeof(ConnDeadtimeout);
code = RegQueryValueEx(parmKey, "ConnDeadTimeout", NULL, NULL,
(BYTE *) &ConnDeadtimeout, &dummyLen);
rx_StartServer(0);
afsi_log("rx_StartServer");
+ if (rx_enable_peer_stats)
+ rx_enablePeerRPCStats();
+
+ if (rx_enable_process_stats)
+ rx_enableProcessRPCStats();
+
code = cm_GetRootCellName(rootCellName);
afsi_log("cm_GetRootCellName code %d, cm_freelanceEnabled= %d, rcn= %s",
code, cm_freelanceEnabled, (code ? "<none>" : rootCellName));
return 0;
}
+long cm_IoctlRxStatProcess(struct smb_ioctl *ioctlp, struct cm_user *userp)
+{
+ afs_int32 flags;
+ int code = 0;
+
+ memcpy((char *)&flags, ioctlp->inDatap, sizeof(afs_int32));
+ if (!(flags & AFSCALL_RXSTATS_MASK) || (flags & ~AFSCALL_RXSTATS_MASK)) {
+ return -1;
+ }
+ if (flags & AFSCALL_RXSTATS_ENABLE) {
+ rx_enableProcessRPCStats();
+ }
+ if (flags & AFSCALL_RXSTATS_DISABLE) {
+ rx_disableProcessRPCStats();
+ }
+ if (flags & AFSCALL_RXSTATS_CLEAR) {
+ rx_clearProcessRPCStats(AFS_RX_STATS_CLEAR_ALL);
+ }
+ return 0;
+}
+
+long cm_IoctlRxStatPeer(struct smb_ioctl *ioctlp, struct cm_user *userp)
+{
+ afs_int32 flags;
+ int code = 0;
+
+ memcpy((char *)&flags, ioctlp->inDatap, sizeof(afs_int32));
+
+ if (!(flags & AFSCALL_RXSTATS_MASK) || (flags & ~AFSCALL_RXSTATS_MASK)) {
+ return -1;
+ }
+ if (flags & AFSCALL_RXSTATS_ENABLE) {
+ rx_enablePeerRPCStats();
+ }
+ if (flags & AFSCALL_RXSTATS_DISABLE) {
+ rx_disablePeerRPCStats();
+ }
+ if (flags & AFSCALL_RXSTATS_CLEAR) {
+ rx_clearPeerRPCStats(AFS_RX_STATS_CLEAR_ALL);
+ }
+ return 0;
+}
+
#ifdef DJGPP
extern int afsd_shutdown(int);
extern int afs_shutdown;
extern unsigned int cm_sysNameCount;
extern char * cm_sysNameList[MAXNUMSYSNAMES];
+/* flags for rxstats pioctl */
+
+#define AFSCALL_RXSTATS_MASK 0x7 /* Valid flag bits */
+#define AFSCALL_RXSTATS_ENABLE 0x1 /* Enable RX stats */
+#define AFSCALL_RXSTATS_DISABLE 0x2 /* Disable RX stats */
+#define AFSCALL_RXSTATS_CLEAR 0x4 /* Clear RX stats */
+
#ifndef __CM_IOCTL_INTERFACES_ONLY__
void cm_InitIoctl(void);
extern long cm_IoctlFreemountRemoveCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
extern long cm_IoctlMemoryDump(smb_ioctl_t *ioctlp, cm_user_t *userp);
+
+extern long cm_IoctlRxStatProcess(smb_ioctl_t *ioctlp, cm_user_t *userp);
+
+extern long cm_IoctlRxStatPeer(smb_ioctl_t *ioctlp, cm_user_t *userp);
#endif /* __CM_IOCTL_INTERFACES_ONLY__ */
#endif /* __CM_IOCTL_H_ENV__ */
}
return error;
}
+#endif /* WIN32 */
static int
RxStatProcCmd(struct cmd_syndesc *as, char *arock)
return 0;
}
-#endif /* WIN32 */
#ifndef WIN32
#include "AFS_component_version_number.c"
ts = cmd_CreateSyntax("getcrypt", GetCryptCmd, 0, "get cache manager encryption flag");
-#ifndef WIN32
ts = cmd_CreateSyntax("rxstatproc", RxStatProcCmd, 0,
"Manage per process RX statistics");
cmd_AddParm(ts, "-enable", CMD_FLAG, CMD_OPTIONAL, "Enable RX stats");
cmd_AddParm(ts, "-disable", CMD_FLAG, CMD_OPTIONAL, "Disable RX stats");
cmd_AddParm(ts, "-clear", CMD_FLAG, CMD_OPTIONAL, "Clear RX stats");
+#ifndef WIN32
ts = cmd_CreateSyntax("setcbaddr", CallBackRxConnCmd, 0, "configure callback connection address");
cmd_AddParm(ts, "-addr", CMD_SINGLE, CMD_OPTIONAL, "host name or address");
#endif
#define VIOC_FLUSHALL 0x2b
#define VIOCGETFID 0x2c
#define VIOCGETOWNER 0x2d
+#define VIOC_RXSTAT_PROC 0x2e
+#define VIOC_RXSTAT_PEER 0x2f
#endif /* __SMB_IOCONS_H_ENV_ */
smb_ioctlProcsp[VIOC_FLUSHALL] = cm_IoctlFlushAllVolumes;
smb_ioctlProcsp[VIOCGETFID] = cm_IoctlGetFid;
smb_ioctlProcsp[VIOCGETOWNER] = cm_IoctlGetOwner;
+ smb_ioctlProcsp[VIOC_RXSTAT_PROC] = cm_IoctlRxStatProcess;
+ smb_ioctlProcsp[VIOC_RXSTAT_PEER] = cm_IoctlRxStatPeer;
}
/* called to make a fid structure into an IOCTL fid structure */