PERFORCE change 80025 for review
soc-victor
soc-victor at FreeBSD.org
Mon Jul 11 20:54:26 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=80025
Change 80025 by soc-victor at soc-victor_82.76.158.176 on 2005/07/11 20:53:56
Added partial SNMP SET support for hrSystemDate SNMP scalar. (Timezone change
still not implemented). Also fixed a bunch of coding style issues as Harti
advised me. More coding style cleanup in the next submits.
Affected files ...
.. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile#4 edit
.. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_scalars.c#3 edit
.. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.c#3 edit
.. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.h#3 edit
Differences ...
==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile#4 (text+ko) ====
@@ -8,6 +8,7 @@
MOD= hostres
SRCS= hostres_snmp.c hostres_scalars.c
WARNS?= 6
+#Not having NDEBUG defined will enable assertions and a lot of output on stderr
CFLAGS+= -DNDEBUG
XSYM= host hrStorageOther hrStorageRam hrStorageVirtualMemory \
hrStorageFixedDisk hrStorageRemovableDisk hrStorageFloppyDisk \
==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_scalars.c#3 (text+ko) ====
@@ -112,31 +112,33 @@
*/
static
uint32_t OS_getMemorySize(void);
+
+/*
+ * Try to use the s_date_time parameter as a DateAndTime TC to fill in
+ * the second paramter.
+ * Returns 0 on succes an < 0 for an error.
+ * Bug: time zone info is not used
+ */
+static
+int OS_checkSystemDateInput(u_char s_date_time[11], struct timeval* out);
/*
+ * Set system date and time. Timezone is not changed
+ * Return 0 for success, < 0 for an error
+ */
+static
+int OS_setSystemDate(struct timeval* timeval_to_set);
+/*
* prototype of this function was genrated by gensnmptree tool in header file
* hostres_tree.h
* Returns SNMP_ERR_NOERROR on success
*/
-int op_hrSystem(struct snmp_context *ctx __unused,
+int op_hrSystem(struct snmp_context *ctx,
struct snmp_value *value,
u_int sub,
u_int iidx __unused,
enum snmp_op curr_op)
{
- switch (curr_op) {
- case SNMP_OP_SET:
- case SNMP_OP_GET:
- break;
-
- case SNMP_OP_ROLLBACK:
- case SNMP_OP_COMMIT:
- case SNMP_OP_GETNEXT:
- default:{
- assert(0);
- return (SNMP_ERR_GENERR);
- }
- }/*end switch*/
if(curr_op == SNMP_OP_GET){
switch (value->var.subs[sub - 1]) {
@@ -144,7 +146,7 @@
value->v.uint32 = OS_getSystemUptime();
break;
- case LEAF_hrSystemDate:{
+ case LEAF_hrSystemDate: {
u_char s_date_time[11];
int s_date_time_len = -1;
if((s_date_time_len = OS_getSystemDate(s_date_time)) < 0){
@@ -157,17 +159,17 @@
value->v.uint32 = 0; /*FIX ME*/
break;
- case LEAF_hrSystemInitialLoadParameters:{
+ case LEAF_hrSystemInitialLoadParameters: {
u_char *sys_load_param = NULL;
- if((sys_load_param = OS_getSystemInitialLoadParameters()) != NULL){
+ if((sys_load_param = OS_getSystemInitialLoadParameters()) != NULL) {
return (string_get(value, sys_load_param, -1));
}else{
return (SNMP_ERR_GENERR);
}
}
- case LEAF_hrSystemNumUsers:{
+ case LEAF_hrSystemNumUsers: {
int num_users = OS_getSystemNumUsers();
- if( num_users >= 0 ){
+ if( num_users >= 0 ) {
value->v.uint32 = num_users;
}else{
return (SNMP_ERR_GENERR);
@@ -175,9 +177,9 @@
}
break;
- case LEAF_hrSystemProcesses:{
+ case LEAF_hrSystemProcesses: {
int num_proc = OS_getSystemProcesses();
- if( num_proc >= 0 ){
+ if( num_proc >= 0 ) {
value->v.uint32 = num_proc;
}else{
return (SNMP_ERR_GENERR);
@@ -185,7 +187,7 @@
}
break;
- case LEAF_hrSystemMaxProcesses:{
+ case LEAF_hrSystemMaxProcesses: {
int max_proc = OS_getSystemMaxProcesses();
if( max_proc >= 0 ){
value->v.uint32 = max_proc;
@@ -201,13 +203,31 @@
}
}/*end switch*/
- }else{
- /*SNMP SET*/
- switch (value->var.subs[sub - 1]){
- case LEAF_hrSystemDate:
+ } else if(curr_op == SNMP_OP_SET ) {
+
+ switch (value->var.subs[sub - 1]) {
+ case LEAF_hrSystemDate: {
+ if ( string_save(value, ctx, 8,
+ &hostres_ctx_g.time_to_set ) == SNMP_ERR_NOERROR
+ ||
+ string_save(value, ctx, 11,
+ &hostres_ctx_g.time_to_set ) == SNMP_ERR_NOERROR
+ ) {
+
+ if( OS_checkSystemDateInput( hostres_ctx_g.time_to_set,
+ &hostres_ctx_g.timeval_to_set) != 0 ) {
+ HR_DPRINTF((stderr,
+ "Parse for '%s' failed as DateAndTime \n",
+ hostres_ctx_g.time_to_set));
+ return (SNMP_ERR_GENERR);
+ }
+ }
+ return (SNMP_ERR_NOERROR);
+
+ }
case LEAF_hrSystemInitialLoadDevice:
case LEAF_hrSystemInitialLoadParameters:
- default:{
+ default: {
/*not implmeted yet*/
assert(0);
return (SNMP_ERR_GENERR);
@@ -215,7 +235,55 @@
}
}
- }
+ } else if (curr_op == SNMP_OP_ROLLBACK ) {
+ switch (value->var.subs[sub - 1]) {
+ case LEAF_hrSystemDate: {
+ HR_DPRINTF((stderr, "SNMP_OP_ROLLBACK for LEAF_hrSystemDate\n"));
+ string_rollback(ctx, &hostres_ctx_g.time_to_set);
+ hostres_ctx_g.timeval_to_set.tv_sec = 0;
+ hostres_ctx_g.timeval_to_set.tv_usec = 0;
+ return (SNMP_ERR_NOERROR);
+ }
+
+ case LEAF_hrSystemInitialLoadDevice:
+ case LEAF_hrSystemInitialLoadParameters:
+ default: {
+ /*not implmeted yet*/
+ assert(0);
+ return (SNMP_ERR_GENERR);
+
+ }
+ }
+
+ } else if (curr_op == SNMP_OP_COMMIT ) {
+ switch (value->var.subs[sub - 1]) {
+ case LEAF_hrSystemDate: {
+ HR_DPRINTF((stderr,
+ "SNMP_OP_COMMIT for LEAF_hrSystemDate\n"));
+ string_commit(ctx);
+ if( OS_setSystemDate(&hostres_ctx_g.timeval_to_set) != 0 ) {
+ HR_DPRINTF((stderr,
+ "SNMP_OP_COMMIT FAILEDfor LEAF_hrSystemDate\n"));
+ return (SNMP_ERR_GENERR);
+ }
+ return (SNMP_ERR_NOERROR);
+ }
+
+ case LEAF_hrSystemInitialLoadDevice:
+ case LEAF_hrSystemInitialLoadParameters:
+ default: {
+ /*not implmeted yet*/
+ assert(0);
+ return (SNMP_ERR_GENERR);
+
+ }
+ }
+
+ } else{
+ /*get next*/
+ HR_DPRINTF((stderr, "SNMP_OP_GETNEXT meaningless for scalars \n"));
+ return (SNMP_ERR_GENERR);
+ }
return (SNMP_ERR_NOERROR);
}
@@ -273,12 +341,12 @@
* FreeBSD specific functions zone
*/
-uint32_t OS_getSystemUptime(void){
+uint32_t OS_getSystemUptime(void) {
struct timeval right_now = {0,0};
- if( hostres_ctx_g.kernel_boot == 0 ){
+ if( hostres_ctx_g.kernel_boot == 0 ) {
/*first time, do the sysctl*/
@@ -286,12 +354,12 @@
int mib[2]={CTL_KERN,KERN_BOOTTIME};
size_t len = sizeof(kernel_boot_timestamp);
- if(sysctl(mib, 2, &kernel_boot_timestamp, &len, NULL, 0) == -1){
- syslog(LOG_ERR,"sysctl KERN_BOOTTIME failed: %m ");
- return 0; /*error*/
+ if(sysctl(mib, 2, &kernel_boot_timestamp, &len, NULL, 0) == -1) {
+ syslog(LOG_ERR, "sysctl KERN_BOOTTIME failed: %m ");
+ return (0); /*error*/
}
- HR_DPRINTF((stderr,"Got boot timestamp from kernel:{%ld,%ld}\n",
+ HR_DPRINTF((stderr, "Got boot timestamp from kernel:{%ld,%ld}\n",
kernel_boot_timestamp.tv_sec,
kernel_boot_timestamp.tv_usec));
@@ -299,9 +367,9 @@
(kernel_boot_timestamp.tv_usec / 10000);
}
- if( gettimeofday(&right_now, NULL) < 0 ){
- syslog(LOG_ERR,"gettimeofday failed: %m ");
- return 0; /*error*/
+ if( gettimeofday(&right_now, NULL) < 0 ) {
+ syslog(LOG_ERR, "gettimeofday failed: %m ");
+ return (0); /*error*/
}
return ( (right_now.tv_sec * 100) +
@@ -314,21 +382,21 @@
-int OS_getSystemDate(u_char s_date_time[11]){
+int OS_getSystemDate(u_char s_date_time[11]) {
struct tm tloc_tm;
time_t tloc_time_t;
struct timeval right_now = {0,0};
int string_len = -1;
- if( gettimeofday(&right_now, NULL) < 0 ){
- syslog(LOG_ERR,"gettimeofday failed: %m ");
+ if( gettimeofday(&right_now, NULL) < 0 ) {
+ syslog(LOG_ERR, "gettimeofday failed: %m ");
return (-1); /*error*/
}
tloc_time_t = right_now.tv_sec;
- if(localtime_r(&tloc_time_t, &tloc_tm) == NULL ){
- syslog(LOG_ERR,"localtime_r() failed: %m ");
+ if(localtime_r(&tloc_time_t, &tloc_tm) == NULL ) {
+ syslog(LOG_ERR, "localtime_r() failed: %m ");
return (-1); /*error*/
}
@@ -359,28 +427,28 @@
OS_getSystemInitialLoadParameters(void){
- if( strlen(hostres_ctx_g.k_boot_line) == 0){
- int mib[2]={CTL_KERN,KERN_BOOTFILE};
+ if( strlen(hostres_ctx_g.k_boot_line) == 0) {
+ int mib[2]={ CTL_KERN, KERN_BOOTFILE };
char *buf = NULL;
size_t buf_len = 0;
- sysctl(mib, 2, NULL, &buf_len, NULL, 0);/*got the needed buffer len */
+ sysctl(mib, 2, NULL, &buf_len, NULL, 0); /*got the needed buffer len */
buf = (u_char*)malloc(buf_len);
if(buf == NULL){
- syslog(LOG_ERR,"malloc failed ");
+ syslog(LOG_ERR, "malloc failed ");
return (NULL); /*error*/
}
if ( sysctl(mib, 2, buf, &buf_len, NULL, 0) ) {
- syslog(LOG_ERR,"sysctl({CTL_KERN,KERN_BOOTFILE}) failed: %m ");
+ syslog(LOG_ERR, "sysctl({CTL_KERN,KERN_BOOTFILE}) failed: %m ");
free(buf);
return (NULL); /*error*/
}
(void)strncpy(hostres_ctx_g.k_boot_line, buf, 127);
- HR_DPRINTF((stderr,"Got kernel boot file: %s\n",hostres_ctx_g.k_boot_line));
+ HR_DPRINTF((stderr, "Got kernel boot file: %s\n", hostres_ctx_g.k_boot_line));
free(buf);
}
return ((u_char*)&hostres_ctx_g.k_boot_line[0]);
@@ -388,73 +456,116 @@
-int OS_getSystemNumUsers(void){
+int OS_getSystemNumUsers(void) {
int user_counter = 0;
struct utmp utmp_entry;
struct passwd *pw;
- if( hostres_ctx_g.utmp_fp == (FILE*)NULL ){
+ if( hostres_ctx_g.utmp_fp == (FILE*)NULL ) {
assert(0);
- return -1; /*error*/
+ return (-1); /*error*/
}
/*start with the begining of the utmp file*/
rewind(hostres_ctx_g.utmp_fp);
- while (fread(&utmp_entry, sizeof(utmp_entry), 1, hostres_ctx_g.utmp_fp) == 1){
- if (utmp_entry.ut_name[0] && utmp_entry.ut_line[0]){
- if( (pw = getpwnam(utmp_entry.ut_name)) == NULL){
+ while (fread(&utmp_entry, sizeof(utmp_entry), 1, hostres_ctx_g.utmp_fp) == 1 ) {
+ if (utmp_entry.ut_name[0] && utmp_entry.ut_line[0]) {
+ if( (pw = getpwnam(utmp_entry.ut_name)) == NULL ) {
continue;
}
user_counter++;
}
}
- return user_counter;
+ return (user_counter);
}
-int OS_getSystemProcesses(void){
+int OS_getSystemProcesses(void) {
int proc_count = 0;
- if( hostres_ctx_g.kd == (kvm_t*)NULL ){
+ if( hostres_ctx_g.kd == (kvm_t*)NULL ) {
assert(0);
- return -1; /*error*/
+ return (-1); /*error*/
}
- if( kvm_getprocs(hostres_ctx_g.kd, KERN_PROC_PROC, 0, &proc_count) == NULL ){
- syslog(LOG_ERR,"kvm_getprocs failed: %m ");
- return -1;/*error*/
+ if( kvm_getprocs(hostres_ctx_g.kd, KERN_PROC_PROC, 0, &proc_count) == NULL ) {
+ syslog(LOG_ERR, "kvm_getprocs failed: %m ");
+ return (-1);/*error*/
}
- return proc_count;
+ return (proc_count);
}
-int OS_getSystemMaxProcesses(void){
- if( hostres_ctx_g.max_proc == 0 ){
+int OS_getSystemMaxProcesses(void) {
+ if( hostres_ctx_g.max_proc == 0 ) {
int mib[2] = {CTL_KERN, KERN_MAXPROC};
size_t len = 0;
len = sizeof(hostres_ctx_g.max_proc);
- if(sysctl(mib, 2, &hostres_ctx_g.max_proc, &len, NULL, 0) == -1){
- syslog(LOG_ERR,"sysctl KERN_MAXPROC failed: %m ");
- return -1; /*error*/
+ if(sysctl(mib, 2, &hostres_ctx_g.max_proc, &len, NULL, 0) == -1) {
+ syslog(LOG_ERR, "sysctl KERN_MAXPROC failed: %m ");
+ return (-1); /*error*/
}
HR_DPRINTF((stderr, "Got kernel maxporc: %d\n",hostres_ctx_g.max_proc));
}
- return hostres_ctx_g.max_proc;
+ return (hostres_ctx_g.max_proc);
}
-uint32_t OS_getMemorySize(void){
+uint32_t OS_getMemorySize(void) {
- if(hostres_ctx_g.phys_mem_size == 0){
+ if(hostres_ctx_g.phys_mem_size == 0) {
int mib[2] = { CTL_HW, HW_PHYSMEM };
size_t len = sizeof(hostres_ctx_g.phys_mem_size);
- if (sysctl(mib, 2, &hostres_ctx_g.phys_mem_size, &len, NULL, 0) == -1){
- syslog(LOG_ERR,"sysctl({ CTL_HW, HW_PHYSMEM }) failed: %m ");
- return 0;/*error*/
+ if (sysctl(mib, 2, &hostres_ctx_g.phys_mem_size, &len, NULL, 0) == -1) {
+ syslog(LOG_ERR, "sysctl({ CTL_HW, HW_PHYSMEM }) failed: %m ");
+ return 0; /*error*/
}
- hostres_ctx_g.phys_mem_size = hostres_ctx_g.phys_mem_size/1024;
+ hostres_ctx_g.phys_mem_size = hostres_ctx_g.phys_mem_size / 1024;
+ }
+ return (hostres_ctx_g.phys_mem_size);
+
+}
+
+
+int OS_checkSystemDateInput(u_char s_date_time[11], struct timeval* out) {
+ struct tm tm_to_set;
+ time_t time_t_to_set;
+
+
+ if( out == NULL ) {
+ assert(0);
+ return (-1); /*error*/
+ }
+
+ tm_to_set.tm_year = (( (int32_t)s_date_time[0] )<<8) +
+ ((int32_t)s_date_time[1]-1900);
+ tm_to_set.tm_mon = (int32_t)s_date_time[2]-1;
+ tm_to_set.tm_mday = (int32_t)s_date_time[3];
+ tm_to_set.tm_hour = (int32_t)s_date_time[4];
+ tm_to_set.tm_min = (int32_t)s_date_time[5];
+ tm_to_set.tm_sec = (int32_t)s_date_time[6];
+
+ /*the input is interpreted as local time, not UTC, not GMT*/
+
+ if( (time_t_to_set = mktime(&tm_to_set) ) == (time_t)-1) {
+ return (-1); /*error*/
}
- return hostres_ctx_g.phys_mem_size;
+ out->tv_sec = time_t_to_set; /*seconds*/
+ out->tv_usec = (int32_t)s_date_time[7] * 100000; /*deci-seconds to micro-seconds*/
+
+ return ( 0 );
+
+}
+int OS_setSystemDate(struct timeval* timeval_to_set) {
+ if(timeval_to_set != NULL) {
+ if( settimeofday( timeval_to_set, (struct timezone *)NULL) < 0 ) {
+ HR_DPRINTF(( stderr, "settimeofday done\n" ));
+ syslog(LOG_ERR, "settimeofday failed: %m ");
+ return (-1); /*error*/
+ }
+ return (0);
+ }
+ return (-1); /*error*/
}
==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.c#3 (text+ko) ====
@@ -56,7 +56,7 @@
Returns 0 on success, < 0 on error
*/
static
-int hostres_init(struct lmodule * mod, int argc __unused, char *argv[] __unused){
+int hostres_init(struct lmodule * mod, int argc __unused, char *argv[] __unused) {
hostres_module = mod;
@@ -72,20 +72,20 @@
hostres_ctx_g.phys_mem_size = 0;
- if( ( hostres_ctx_g.utmp_fp = fopen(_PATH_UTMP, "r") ) == (FILE*)NULL){
- syslog(LOG_ERR,"fopen(%s) failed: %m ",(const char*)_PATH_UTMP);
+ if( ( hostres_ctx_g.utmp_fp = fopen(_PATH_UTMP, "r") ) == (FILE*)NULL) {
+ syslog(LOG_ERR, "fopen(%s) failed: %m ", (const char*)_PATH_UTMP);
return (-1); /*error*/
}
if( ( hostres_ctx_g.kd =
kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open")) == (kvm_t*)NULL )
{
- syslog(LOG_ERR,"kvm_open failed: %m ");
+ syslog(LOG_ERR, "kvm_open failed: %m ");
return (-1); /*error*/
}
- HR_DPRINTF((stderr,"[%s] done.\n", __FUNCTION__));
+ HR_DPRINTF((stderr, "[%s] done.\n", __func__));
return (0);
}
@@ -98,17 +98,17 @@
int hostres_fini(void)
{
/* here I free the resources used by this module*/
- if( hostres_ctx_g.utmp_fp != (FILE*)NULL ){
- if( fclose(hostres_ctx_g.utmp_fp) != 0 ){
- syslog(LOG_ERR,"fclose failed: %m ");
+ if( hostres_ctx_g.utmp_fp != (FILE*)NULL ) {
+ if( fclose(hostres_ctx_g.utmp_fp) != 0 ) {
+ syslog(LOG_ERR, "fclose failed: %m ");
return (-1); /*error*/
}
hostres_ctx_g.utmp_fp = (FILE*)NULL;
}
- if( hostres_ctx_g.kd != (kvm_t*)NULL ){
- if( kvm_close(hostres_ctx_g.kd) != 0 ){
- syslog(LOG_ERR,"kvm_close failed: %m ");
+ if( hostres_ctx_g.kd != (kvm_t*)NULL ) {
+ if( kvm_close(hostres_ctx_g.kd) != 0 ) {
+ syslog(LOG_ERR, "kvm_close failed: %m ");
return (-1); /*error*/
}
hostres_ctx_g.kd = (kvm_t*)NULL;
@@ -127,7 +127,7 @@
if( host_registration_id > 0){
or_unregister(host_registration_id);
}
- HR_DPRINTF((stderr,"[%s] done.\n", __FUNCTION__));
+ HR_DPRINTF((stderr, "[%s] done.\n", __func__));
return (0);
}
@@ -136,9 +136,9 @@
returns nothing
*/
static
-void hostres_idle_v(void){
+void hostres_idle_v(void) {
/*nothing iteresting here for the time being*/
- HR_DPRINTF((stderr,"[%s] done.\n ", __FUNCTION__));
+ HR_DPRINTF((stderr, "[%s] done.\n ", __func__));
}
/*
@@ -146,9 +146,9 @@
returns nothing
*/
static
-void hostres_dump_v(void){
+void hostres_dump_v(void) {
/*nothing iteresting here for the time being*/
- HR_DPRINTF((stderr, "[%s] done.\n ", __FUNCTION__));
+ HR_DPRINTF((stderr, "[%s] done.\n ", __func__));
}
@@ -157,9 +157,9 @@
returns nothing
*/
static
-void hostres_config_v(void){
+void hostres_config_v(void) {
/*nothing iteresting here for the time being*/
- HR_DPRINTF((stderr, "[%s] done.\n ", __FUNCTION__));
+ HR_DPRINTF((stderr, "[%s] done.\n ", __func__));
}
@@ -168,11 +168,11 @@
void hostres_loading_v(const struct lmodule *mod __unused, int loaded)
{
/*nothing iteresting here for the time being*/
- if (loaded == 1){
+ if ( loaded == 1 ) {
goto LABEL_RETURN;
}
LABEL_RETURN:;
- HR_DPRINTF((stderr,"[%s] done.\n ", __FUNCTION__));
+ HR_DPRINTF((stderr,"[%s] done.\n ", __func__));
}
/*
@@ -180,11 +180,11 @@
returns nothing
*/
static
-void hostres_start_v(void){
- host_registration_id = or_register(&oid_host,
- "The MIB module for host resource mib (rfc 2790).",
+void hostres_start_v(void) {
+ host_registration_id = or_register(&oid_host,
+ "The MIB module for host resource mib (rfc 2790).",
hostres_module);
- HR_DPRINTF((stderr, "[%s] done.\n ", __FUNCTION__));
+ HR_DPRINTF((stderr, "[%s] done.\n ", __func__));
}
/*this identifies the HOST RESOURCES mib module*/
==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.h#3 (text+ko) ====
@@ -34,20 +34,20 @@
#include "asn1.h"
#include "snmp.h"
#include "snmpmod.h"
-#include <stdio.h> /*for FILE */
-#include <fcntl.h> /*for kvm_open & friends*/
+#include <stdio.h> /*for FILE */
+#include <fcntl.h> /*for kvm_open & friends*/
#include <kvm.h>
+#include <sys/time.h> /*for struct timeval*/
/*a debug macro*/
#ifndef NDEBUG
-
-#define HR_DPRINTF(args) (fprintf(stderr,"HR DEBUG: "), fprintf args)
-
+#define HR_DPRINTF(ARGS) do { \
+ fprintf(stderr, "HRDEBUG: "); \
+ fprintf ARGS; \
+ } while (0)
#else
-
#define HR_DPRINTF(args)
-
#endif /*NDEBUG*/
typedef struct hostres_ctx_struct{
@@ -58,6 +58,10 @@
int max_proc; /*maximum number of processes */
uint32_t phys_mem_size; /*physical memory size in Kb*/
+ u_char *time_to_set; /*for setting hrSystemDate*/
+ struct timeval timeval_to_set; /*for setting hrSystemDate*/
+
+
}hostres_ctx_type;
extern hostres_ctx_type hostres_ctx_g;
More information about the p4-projects
mailing list