X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fstatd%2Fstatd.c;h=ea985e6877d12f19cb83a702d805e5c68d217605;hb=69620a042d1151871a31f07ccd210b2dab49c628;hp=091ced9316e9220408fb7799004c297b8c0fd9ec;hpb=25001e18ff31933d1f40b510da969a8cee317310;p=nfs-utils.git diff --git a/utils/statd/statd.c b/utils/statd/statd.c index 091ced9..ea985e6 100644 --- a/utils/statd/statd.c +++ b/utils/statd/statd.c @@ -76,6 +76,7 @@ static struct option longopts[] = extern void sm_prog_1 (struct svc_req *, register SVCXPRT *); extern int statd_get_socket(void); +static void load_state_number(void); #ifdef SIMULATIONS extern void simulator (int, char **); @@ -147,7 +148,7 @@ static void log_modes(void) * help the occasional admin. */ static void -usage() +usage(void) { fprintf(stderr,"usage: %s [options]\n", name_p); fprintf(stderr," -h, -?, --help Print this help screen.\n"); @@ -444,7 +445,7 @@ int main (int argc, char **argv) /* Child. */ - log_init (name_p,version_p); + log_init (/*name_p,version_p*/); log_modes(); @@ -483,7 +484,7 @@ int main (int argc, char **argv) * pass on any SM_NOTIFY that arrives */ load_state(); - + load_state_number(); pmap_unset (SM_PROG, SM_VERS); /* this registers both UDP and TCP services */ @@ -526,3 +527,23 @@ int main (int argc, char **argv) } return 0; } + +static void +load_state_number(void) +{ + int fd; + + if ((fd = open(SM_STAT_PATH, O_RDONLY)) == -1) + return; + + read(fd, &MY_STATE, sizeof(MY_STATE)); + close(fd); + fd = open("/proc/sys/fs/nfs/nsm_local_state",O_WRONLY); + if (fd >= 0) { + char buf[20]; + snprintf(buf, sizeof(buf), "%d", MY_STATE); + write(fd, buf, strlen(buf)); + close(fd); + } + +}