int matomlserv_init(void) { ListenHost = cfg_getstr("MATOML_LISTEN_HOST","*"); ListenPort = cfg_getstr("MATOML_LISTEN_PORT","9419"); lsock = tcpsocket(); if (lsock<0) { mfs_errlog(LOG_ERR,"master <-> metaloggers module: can't create socket"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); if (tcpsetacceptfilter(lsock)<0 && errno!=ENOTSUP) { mfs_errlog_silent(LOG_NOTICE,"master <-> metaloggers module: can't set accept filter"); } if (tcpstrlisten(lsock,ListenHost,ListenPort,100)<0) { mfs_arg_errlog(LOG_ERR,"master <-> metaloggers module: can't listen on %s:%s",ListenHost,ListenPort); return -1; } mfs_arg_syslog(LOG_NOTICE,"master <-> metaloggers module: listen on %s:%s",ListenHost,ListenPort); matomlservhead = NULL; ChangelogSecondsToRemember = cfg_getuint16("MATOML_LOG_PRESERVE_SECONDS",600); if (ChangelogSecondsToRemember>3600) { syslog(LOG_WARNING,"Number of seconds of change logs to be preserved in master is too big (%"PRIu16") - decreasing to 3600 seconds",ChangelogSecondsToRemember); ChangelogSecondsToRemember=3600; } main_reloadregister(matomlserv_reload); main_destructregister(matomlserv_term); main_canexitregister(matomlserv_canexit); main_pollregister(matomlserv_desc,matomlserv_serve); main_timeregister(TIMEMODE_SKIP_LATE,3600,0,matomlserv_status); return 0; }
int matomlserv_init(void) { ListenHost = cfg_getstr("MATOML_LISTEN_HOST","*"); ListenPort = cfg_getstr("MATOML_LISTEN_PORT","9419"); lsock = tcpsocket(); if (lsock<0) { mfs_errlog(LOG_ERR,"master <-> metaloggers module: can't create socket"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); if (tcpsetacceptfilter(lsock)<0 && errno!=ENOTSUP) { mfs_errlog_silent(LOG_NOTICE,"master <-> metaloggers module: can't set accept filter"); } if (tcpstrlisten(lsock,ListenHost,ListenPort,100)<0) { mfs_errlog(LOG_ERR,"master <-> metaloggers module: can't listen on socket"); return -1; } mfs_arg_syslog(LOG_NOTICE,"master <-> metaloggers module: listen on %s:%s",ListenHost,ListenPort); matomlservhead = NULL; main_reloadregister(matomlserv_reload); main_destructregister(matomlserv_term); main_pollregister(matomlserv_desc,matomlserv_serve); main_timeregister(TIMEMODE_SKIP_LATE,3600,0,matomlserv_status); return 0; }
int csserv_init(void) { ListenHost = cfg_getstr("CSSERV_LISTEN_HOST","*"); ListenPort = cfg_getstr("CSSERV_LISTEN_PORT",DEFAULT_CS_DATA_PORT); lsock = tcpsocket(); if (lsock<0) { mfs_errlog(LOG_ERR,"main server module: can't create socket"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); tcpresolve(ListenHost,ListenPort,&mylistenip,&mylistenport,1); if (tcpnumlisten(lsock,mylistenip,mylistenport,100)<0) { mfs_errlog(LOG_ERR,"main server module: can't listen on socket"); return -1; } if (tcpsetacceptfilter(lsock)<0 && errno!=ENOTSUP) { mfs_errlog_silent(LOG_NOTICE,"main server module: can't set accept filter"); } mfs_arg_syslog(LOG_NOTICE,"main server module: listen on %s:%s",ListenHost,ListenPort); csservhead = NULL; main_reload_register(csserv_reload); main_destruct_register(csserv_term); main_poll_register(csserv_desc,csserv_serve); return 0; }
void matomlserv_reload(void) { char *oldListenHost,*oldListenPort; int newlsock; oldListenHost = ListenHost; oldListenPort = ListenPort; ListenHost = cfg_getstr("MATOML_LISTEN_HOST","*"); ListenPort = cfg_getstr("MATOML_LISTEN_PORT","9419"); if (strcmp(oldListenHost,ListenHost)==0 && strcmp(oldListenPort,ListenPort)==0) { free(oldListenHost); free(oldListenPort); mfs_arg_syslog(LOG_NOTICE,"master <-> metaloggers module: socket address hasn't changed (%s:%s)",ListenHost,ListenPort); return; } newlsock = tcpsocket(); if (newlsock<0) { mfs_errlog(LOG_WARNING,"master <-> metaloggers module: socket address has changed, but can't create new socket"); free(ListenHost); free(ListenPort); ListenHost = oldListenHost; ListenPort = oldListenPort; return; } tcpnonblock(newlsock); tcpnodelay(newlsock); tcpreuseaddr(newlsock); if (tcpsetacceptfilter(newlsock)<0 && errno!=ENOTSUP) { mfs_errlog_silent(LOG_NOTICE,"master <-> metaloggers module: can't set accept filter"); } if (tcpstrlisten(newlsock,ListenHost,ListenPort,100)<0) { mfs_arg_errlog(LOG_ERR,"master <-> metaloggers module: socket address has changed, but can't listen on socket (%s:%s)",ListenHost,ListenPort); free(ListenHost); free(ListenPort); ListenHost = oldListenHost; ListenPort = oldListenPort; tcpclose(newlsock); return; } mfs_arg_syslog(LOG_NOTICE,"master <-> metaloggers module: socket address has changed, now listen on %s:%s",ListenHost,ListenPort); free(oldListenHost); free(oldListenPort); tcpclose(lsock); lsock = newlsock; ChangelogSecondsToRemember = cfg_getuint16("MATOML_LOG_PRESERVE_SECONDS",600); if (ChangelogSecondsToRemember>3600) { syslog(LOG_WARNING,"Number of seconds of change logs to be preserved in master is too big (%"PRIu16") - decreasing to 3600 seconds",ChangelogSecondsToRemember); ChangelogSecondsToRemember=3600; } }
void csserv_reload(void) { char *oldListenHost,*oldListenPort; int newlsock; // ThreadedServer = 1-ThreadedServer; oldListenHost = ListenHost; oldListenPort = ListenPort; ListenHost = cfg_getstr("CSSERV_LISTEN_HOST","*"); ListenPort = cfg_getstr("CSSERV_LISTEN_PORT",DEFAULT_CS_DATA_PORT); if (strcmp(oldListenHost,ListenHost)==0 && strcmp(oldListenPort,ListenPort)==0) { free(oldListenHost); free(oldListenPort); mfs_arg_syslog(LOG_NOTICE,"main server module: socket address hasn't changed (%s:%s)",ListenHost,ListenPort); return; } newlsock = tcpsocket(); if (newlsock<0) { mfs_errlog(LOG_WARNING,"main server module: socket address has changed, but can't create new socket"); free(ListenHost); free(ListenPort); ListenHost = oldListenHost; ListenPort = oldListenPort; return; } tcpnonblock(newlsock); tcpnodelay(newlsock); tcpreuseaddr(newlsock); if (tcpstrlisten(newlsock,ListenHost,ListenPort,100)<0) { mfs_arg_errlog(LOG_ERR,"main server module: socket address has changed, but can't listen on socket (%s:%s)",ListenHost,ListenPort); free(ListenHost); free(ListenPort); ListenHost = oldListenHost; ListenPort = oldListenPort; tcpclose(newlsock); return; } if (tcpsetacceptfilter(newlsock)<0 && errno!=ENOTSUP) { mfs_errlog_silent(LOG_NOTICE,"main server module: can't set accept filter"); } mfs_arg_syslog(LOG_NOTICE,"main server module: socket address has changed, now listen on %s:%s",ListenHost,ListenPort); free(oldListenHost); free(oldListenPort); tcpclose(lsock); lsock = newlsock; }
/* ning: * 这是从 mfs matomlserv.c, matocsserv.c, matocuserv.c 三个代码里面提出来的公用代码 */ int server_socket(char * host, char * port){ int lsock = tcpsocket(); if (lsock<0) { logging(LOG_ERROR, "can't create socket !!!"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); if (tcpsetacceptfilter(lsock)<0) { logging(LOG_INFO,"can't set accept filter: %m"); //TODO: I do not know what this for } if (tcpstrlisten(lsock, host ,port,100)<0) { logging(LOG_ERROR,"can't Listen on socket : %m"); return -1; } logging(LOG_INFO,"listen on %s:%s", host, port); return lsock; }
int matoslaserv_init() { ListenHost = cfg_getstr("MATOSLA_LISTEN_HOST","*"); ListenPort = cfg_getstr("MATOSLA_LISTEN_PORT","9423"); BindHost = cfg_getstr("BIND_HOST","*"); MaxReconnect = cfg_getuint32("MAX_RECONNECT",10); sla_worker_addr[0].host = cfg_getstr("SLA_SYNC_WORKER_HOST_1","*"); sla_worker_addr[0].port = cfg_getstr("SLA_SYNC_WORKER_PORT_1","9422"); sla_worker_addr[1].host = cfg_getstr("SLA_SYNC_WORKER_HOST_2","*"); sla_worker_addr[1].port = cfg_getstr("SLA_SSYNC_WORKER_PORT_2","9422"); sla_worker_addr[2].host = cfg_getstr("SLA_SSYNC_WORKER_HOST_3","*"); sla_worker_addr[2].port = cfg_getstr("SLA_SSYNC_WORKER_PORT_3","9422"); sla_worker_addr[3].host = cfg_getstr("SLA_SSYNC_WORKER_HOST_4","*"); sla_worker_addr[3].port = cfg_getstr("SLA_SSYNC_WORKER_PORT_4","9422"); first_add_listen_sock = 0; lsock = tcpsocket(); if (lsock<0) { MFSLOG(LOG_ERR,"matosla: socket error: %m"); fprintf(msgfd,"master <-> metaloggers module: can't create socket\n"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); if (sla_worker_addr_resolve()<0) { MFSLOG(LOG_NOTICE,"sla_worker_addr_resolve failed"); } if (tcpsetacceptfilter(lsock)<0) { MFSLOG(LOG_NOTICE,"matosla: can't set accept filter: %m"); } if (tcpstrlisten(lsock,ListenHost,ListenPort,1024)<0) { MFSLOG(LOG_ERR,"matosla: listen error: %m"); fprintf(msgfd,"master <-> metaloggers module: can't listen on socket\n"); return -1; } MFSLOG(LOG_NOTICE,"matosla: listen on %s:%s",ListenHost,ListenPort); fprintf(msgfd,"master <-> metaloggers module: listen on %s:%s\n",ListenHost,ListenPort); matoslaservhead = NULL; main_destructregister(matoslaserv_term); main_epollregister(matoslaserv_desc,matoslaserv_serve); return 0; }
//initialize listen port int masterconn_initlisten() { lsock = tcpsocket(); if (lsock<0) { MFSLOG(LOG_ERR,"smtoma: socket error: %m"); fprintf(msgfd,"shadow master <-> master module: can't create socket\n"); return -1; } tcpnonblock(lsock); tcpnodelay(lsock); tcpreuseaddr(lsock); if (tcpsetacceptfilter(lsock)<0) { MFSLOG(LOG_NOTICE,"smtoma: can't set accept filter: %m"); } if (tcpstrlisten(lsock,ListenHost,ListenPort,100)<0) { MFSLOG(LOG_ERR,"smtoma: listen port:%s error: %m\n", ListenPort); fprintf(msgfd,"shadow master to master module: can't listen on socket\n"); return -1; } MFSLOG(LOG_NOTICE,"smtoma: listen on %s:%s",ListenHost,ListenPort); fprintf(msgfd,"slave <-> master module: listen on %s:%s\n",ListenHost,ListenPort); return 0; }