#include <stdlib.h>\r
#include <string.h>\r
#include <unistd.h>\r
+#include <sys/stat.h>\r
#include <sys/mman.h>\r
#include <sys/types.h>\r
-#include "../../src/sharedmemory.h"\r
-#include "../../src/sharedmemory_global.h"\r
+\r
+#include "sharedmemory_struct.h"\r
\r
enum{ NOP_SHM, WAIT_ATTACH_SHM, TRY_ATTACH_SHM, MAT_SHM, CLEAN_UP_SHM, RUN_SHM };\r
\r
+int shm_fd;\r
+shm_t *shmptr = NULL;\r
+char shm_file_name[128];\r
+\r
int wait = 0, opt;\r
uint8_t last, shm_statem = TRY_ATTACH_SHM;\r
\r
\r
int main(int argc, char **argv) \r
{\r
-\r
-\r
- while ( (opt = getopt(argc, argv, "w")) != -1 ) \r
+ struct stat buf;\r
+ int bindport = 0;\r
+ \r
+ while ( (opt = getopt(argc, argv, "wb:")) != -1 ) \r
{\r
switch(opt) \r
{\r
case 'w':\r
wait = 1;\r
break;\r
- default: \r
- fprintf(stderr, "Usage: %s [-w]\n", argv[0]);\r
+ case 'b':\r
+ bindport = atoi(optarg);\r
+ break; \r
+ default: \r
+ fprintf(stderr, "Usage: %s [-w] [-b <port>]\n", argv[0]);\r
fprintf(stderr, "\t-w - Wait for umurmurd to create shm area. useful if you need to start from init.d script\n" );\r
+ fprintf(stderr, "\t-b <port> - Change this to the port used when starting umurmurd. Defaults to \"/umurmurd:64738\" \n");\r
exit(EXIT_FAILURE);\r
}\r
}\r
\r
shmptr = NULL;\r
\r
- sprintf( shm_file_name, "/umurmurd:%i", 64738 );\r
+ if( !bindport )\r
+ {\r
+ bindport = 64738;\r
+ }\r
+ \r
+ sprintf( shm_file_name, "/umurmurd:%i", bindport );\r
\r
if( wait )\r
shm_statem = WAIT_ATTACH_SHM;\r
}\r
shm_statem = MAT_SHM;\r
break;\r
- case MAT_SHM: \r
- if( ( shmptr = mmap(0, 1, PROT_READ, MAP_SHARED, shm_fd, 0) ) == (void *) (-1) ) //MJP BUG? \r
+ case MAT_SHM: \r
+ fstat( shm_fd, &buf); \r
+ if( ( shmptr = mmap(0, buf.st_size, PROT_READ, MAP_SHARED, shm_fd, 0) ) == MAP_FAILED ) \r
{\r
- \r
exit(EXIT_FAILURE);\r
} \r
printf( "umumurd PID: %u\n\r", shmptr->umurmurd_pid );\r
int cc;\r
\r
printf( "\033[2J\033[H" ); fflush(stdout); //clear screen VT100\r
- \r
+ printf( "%s Clients(CONECTED/MAX) %i/%i\n\n", shm_file_name, shmptr->clientcount, shmptr->server_max_clients ); \r
\r
for( cc = 0 ; cc < shmptr->server_max_clients ; cc++ )\r
{\r