[Initng-svn] r2670 - initng/plugins/ngcs
svn at initng.thinktux.net
svn at initng.thinktux.net
Mon Jan 2 17:13:28 CET 2006
Author: makomk
Date: Mon Jan 2 17:13:28 2006
New Revision: 2670
Modified:
initng/plugins/ngcs/initng_ngcs.c
initng/plugins/ngcs/initng_ngcs.h
initng/plugins/ngcs/initng_ngcs_cmds.c
initng/plugins/ngcs/ngcs_common.c
initng/plugins/ngcs/ngcs_common.h
Log:
Indentation; sorry
Modified: initng/plugins/ngcs/initng_ngcs.c
==============================================================================
--- initng/plugins/ngcs/initng_ngcs.c (original)
+++ initng/plugins/ngcs/initng_ngcs.c Mon Jan 2 17:13:28 2006
@@ -62,12 +62,13 @@
static void accepted_client(f_module_h * from);
static void closesock(void);
+
/* static int sendping(void); */
static int open_socket(void);
static void check_socket(void);
static void data_ready(f_module_h * from);
-static void closeconn(ngcs_conn* conn);
-static void closeconn_safe(ngcs_conn* conn);
+static void closeconn(ngcs_conn * conn);
+static void closeconn_safe(ngcs_conn * conn);
void register_ngcs_cmds(void);
void unregister_ngcs_cmds(void);
void clean_dead_conns(void);
@@ -110,7 +111,7 @@
{
int newsock;
struct timeval tv;
- ngcs_conn* conn;
+ ngcs_conn *conn;
/* In case of lots of short-lived connections */
clean_dead_conns();
@@ -137,23 +138,27 @@
if ((newsock = accept(fdh.fds, NULL, NULL)) > 0)
{
D_("read socket open, now setting options\n");
- tv.tv_sec = 2; tv.tv_usec = 0;
- if(setsockopt(newsock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)))
- W_("Setting SO_RCVTIMEO failed!\n");
- if(setsockopt(newsock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)))
- W_("Setting SO_SNDTIMEO failed!\n");
- conn = (ngcs_conn*) malloc(sizeof(ngcs_conn));
- if(conn == NULL) {
- F_("Couldn't allocate ngcs_conn!");
- close(newsock); return;
- }
- conn->fdw.fds = newsock;
- conn->fdw.call_module = data_ready;
- conn->nextid = 1;
- conn->list.next = 0; conn->list.prev = 0;
- list_add( &conn->list, &ngcs_conns.list);
- INIT_LIST_HEAD(&conn->chans.list);
- initng_plugin_hook_add(FDWATCHERS, 30, &conn->fdw);
+ tv.tv_sec = 2;
+ tv.tv_usec = 0;
+ if (setsockopt(newsock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)))
+ W_("Setting SO_RCVTIMEO failed!\n");
+ if (setsockopt(newsock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)))
+ W_("Setting SO_SNDTIMEO failed!\n");
+ conn = (ngcs_conn *) malloc(sizeof(ngcs_conn));
+ if (conn == NULL)
+ {
+ F_("Couldn't allocate ngcs_conn!");
+ close(newsock);
+ return;
+ }
+ conn->fdw.fds = newsock;
+ conn->fdw.call_module = data_ready;
+ conn->nextid = 1;
+ conn->list.next = 0;
+ conn->list.prev = 0;
+ list_add(&conn->list, &ngcs_conns.list);
+ INIT_LIST_HEAD(&conn->chans.list);
+ initng_plugin_hook_add(FDWATCHERS, 30, &conn->fdw);
return;
}
@@ -170,132 +175,188 @@
return;
}
-void data_ready(f_module_h * from) {
- int sock = from->fds; int chanid, cnt;
- ngcs_cmd *cmd;
- ngcs_conn* conn = (ngcs_conn*) from;
- ngcs_data* data;
+void data_ready(f_module_h * from)
+{
+ int sock = from->fds;
+ int chanid, cnt;
+ ngcs_cmd *cmd;
+ ngcs_conn *conn = (ngcs_conn *) from;
+ ngcs_data *data;
ngcs_data sdata[3];
- ngcs_channel* chan;
- if(ngcs_readmsg(sock,&chanid,&data,&cnt)) {
- closeconn(conn); return;
- }
- if(chanid == 0) {
- if(cnt < 0) {
- closeconn(conn); return;
- } else if(cnt == 0) {
- if(ngcs_writemsg(sock,0,NULL,0)) {
- closeconn(conn); return;
- }
- } else if(data[0].type != NGCS_TYPE_STRING) {
- ngcs_freedata(data, cnt);
- sdata[0].type = NGCS_TYPE_INT;
- sdata[0].d.i = 0;
- sdata[1].type = NGCS_TYPE_STRING;
- sdata[1].size = -1; sdata[1].d.s = (char*)"Bad request";
- if(ngcs_writemsg(sock,0,sdata,2))
- closeconn(conn);
- return;
- } else {
- chan = malloc(sizeof(ngcs_channel));
- if(!chan) {
- F_("Couldn't allocate ngcs_chan!\n");
- sdata[0].type = NGCS_TYPE_INT;
- sdata[0].d.i = 0;
- sdata[1].type = NGCS_TYPE_STRING;
- sdata[1].size = -1; sdata[1].d.s = (char*)"Internal error";
- if(ngcs_writemsg(sock,0,sdata,2))
- closeconn(conn);
- ngcs_freedata(data, cnt); return;
- }
- chan->id = conn->nextid++;
- while_ngcs_cmds(cmd) {
- if(strcmp(cmd->name, data[0].d.s) == 0) {
- sdata[0].type = NGCS_TYPE_INT;
- sdata[0].d.i = chan->id;
- if(ngcs_writemsg(sock,0,sdata,1)) {
- closeconn(conn); free(chan);
- ngcs_freedata(data, cnt); return;
- }
- chan->cmd = cmd; chan->conn = conn;
- chan->user_data = NULL;
- chan->list.next = 0; chan->list.prev = 0;
- list_add(&chan->list, &conn->chans.list);
- if(cmd->connect) cmd->connect(chan, data, cnt);
- ngcs_freedata(data, cnt); return;
- }
- }
- F_("Unknown ngcs command: %s", data[0].d.s);
- sdata[0].type = NGCS_TYPE_INT;
- sdata[0].d.i = 0;
- if(ngcs_writemsg(sock,0,sdata,1))
- closeconn(conn);
- free(chan); ngcs_freedata(data, cnt); return;
- }
- } else {
- while_ngcs_chans(chan,conn)
- if(chan->id == chanid) {
- if(chan->cmd->gotdata) chan->cmd->gotdata(chan, data, cnt);
- if(conn->fdw.fds < 0)
- closeconn(conn);
- ngcs_freedata(data, cnt); return;
- }
- W_("Got data on unknown channel %i", chanid);
- if(ngcs_writemsg(conn->fdw.fds,chanid,NULL,-1))
- closeconn(conn);
- ngcs_freedata(data, cnt);
- return;
- }
-}
-
-void closeconn(ngcs_conn* conn) {
- ngcs_channel *chan, *nextchan;
- if(conn->fdw.fds >= 0) {
- initng_plugin_hook_del(FDWATCHERS, &(conn->fdw));
- close(conn->fdw.fds);
- }
- list_for_each_entry_prev_safe(chan, nextchan, &conn->chans.list, list) {
- if(chan->cmd->free) chan->cmd->free(chan);
- list_del(&chan->list); free(chan);
- }
- list_del(&conn->list);
- free(conn);
-}
-
-void closeconn_safe(ngcs_conn* conn) {
- if(conn->fdw.fds >= 0) {
- initng_plugin_hook_del(FDWATCHERS, &(conn->fdw));
- close(conn->fdw.fds); conn->fdw.fds = -1;
- }
- list_move(&conn->list, &ngcs_dead_conns.list);
-}
-
-void clean_dead_conns(void) {
- ngcs_conn *curr,*tmp;
- while_ngcs_dead_conns_safe(curr,tmp) {
- closeconn(curr);
- }
-}
-
-void ngcs_close_channel(ngcs_channel* chan) {
- if(chan->conn->fdw.fds >= 0)
- if(ngcs_writemsg(chan->conn->fdw.fds,chan->id,NULL,-1))
- closeconn_safe(chan->conn);
- if(chan->cmd->free) chan->cmd->free(chan);
- list_del(&chan->list); free(chan);
-}
-
-int ngcs_channel_send(ngcs_channel* chan, ngcs_data* data, int cnt) {
- if(chan->conn->fdw.fds < 0) return 1;
- if(ngcs_writemsg(chan->conn->fdw.fds, chan->id, data, cnt)) {
- closeconn_safe(chan->conn); return 1;
- }
- return 0;
-}
-
-void ngcs_reg_cmd(ngcs_cmd* cmd) {
- cmd->list.prev = 0; cmd->list.next = 0;
- list_add(&cmd->list, &ngcs_cmds.list);
+ ngcs_channel *chan;
+
+ if (ngcs_readmsg(sock, &chanid, &data, &cnt))
+ {
+ closeconn(conn);
+ return;
+ }
+ if (chanid == 0)
+ {
+ if (cnt < 0)
+ {
+ closeconn(conn);
+ return;
+ }
+ else if (cnt == 0)
+ {
+ if (ngcs_writemsg(sock, 0, NULL, 0))
+ {
+ closeconn(conn);
+ return;
+ }
+ }
+ else if (data[0].type != NGCS_TYPE_STRING)
+ {
+ ngcs_freedata(data, cnt);
+ sdata[0].type = NGCS_TYPE_INT;
+ sdata[0].d.i = 0;
+ sdata[1].type = NGCS_TYPE_STRING;
+ sdata[1].size = -1;
+ sdata[1].d.s = (char *) "Bad request";
+ if (ngcs_writemsg(sock, 0, sdata, 2))
+ closeconn(conn);
+ return;
+ }
+ else
+ {
+ chan = malloc(sizeof(ngcs_channel));
+ if (!chan)
+ {
+ F_("Couldn't allocate ngcs_chan!\n");
+ sdata[0].type = NGCS_TYPE_INT;
+ sdata[0].d.i = 0;
+ sdata[1].type = NGCS_TYPE_STRING;
+ sdata[1].size = -1;
+ sdata[1].d.s = (char *) "Internal error";
+ if (ngcs_writemsg(sock, 0, sdata, 2))
+ closeconn(conn);
+ ngcs_freedata(data, cnt);
+ return;
+ }
+ chan->id = conn->nextid++;
+ while_ngcs_cmds(cmd)
+ {
+ if (strcmp(cmd->name, data[0].d.s) == 0)
+ {
+ sdata[0].type = NGCS_TYPE_INT;
+ sdata[0].d.i = chan->id;
+ if (ngcs_writemsg(sock, 0, sdata, 1))
+ {
+ closeconn(conn);
+ free(chan);
+ ngcs_freedata(data, cnt);
+ return;
+ }
+ chan->cmd = cmd;
+ chan->conn = conn;
+ chan->user_data = NULL;
+ chan->list.next = 0;
+ chan->list.prev = 0;
+ list_add(&chan->list, &conn->chans.list);
+ if (cmd->connect)
+ cmd->connect(chan, data, cnt);
+ ngcs_freedata(data, cnt);
+ return;
+ }
+ }
+ F_("Unknown ngcs command: %s", data[0].d.s);
+ sdata[0].type = NGCS_TYPE_INT;
+ sdata[0].d.i = 0;
+ if (ngcs_writemsg(sock, 0, sdata, 1))
+ closeconn(conn);
+ free(chan);
+ ngcs_freedata(data, cnt);
+ return;
+ }
+ }
+ else
+ {
+ while_ngcs_chans(chan, conn) if (chan->id == chanid)
+ {
+ if (chan->cmd->gotdata)
+ chan->cmd->gotdata(chan, data, cnt);
+ if (conn->fdw.fds < 0)
+ closeconn(conn);
+ ngcs_freedata(data, cnt);
+ return;
+ }
+ W_("Got data on unknown channel %i", chanid);
+ if (ngcs_writemsg(conn->fdw.fds, chanid, NULL, -1))
+ closeconn(conn);
+ ngcs_freedata(data, cnt);
+ return;
+ }
+}
+
+void closeconn(ngcs_conn * conn)
+{
+ ngcs_channel *chan, *nextchan;
+
+ if (conn->fdw.fds >= 0)
+ {
+ initng_plugin_hook_del(FDWATCHERS, &(conn->fdw));
+ close(conn->fdw.fds);
+ }
+ list_for_each_entry_prev_safe(chan, nextchan, &conn->chans.list, list)
+ {
+ if (chan->cmd->free)
+ chan->cmd->free(chan);
+ list_del(&chan->list);
+ free(chan);
+ }
+ list_del(&conn->list);
+ free(conn);
+}
+
+void closeconn_safe(ngcs_conn * conn)
+{
+ if (conn->fdw.fds >= 0)
+ {
+ initng_plugin_hook_del(FDWATCHERS, &(conn->fdw));
+ close(conn->fdw.fds);
+ conn->fdw.fds = -1;
+ }
+ list_move(&conn->list, &ngcs_dead_conns.list);
+}
+
+void clean_dead_conns(void)
+{
+ ngcs_conn *curr, *tmp;
+
+ while_ngcs_dead_conns_safe(curr, tmp)
+ {
+ closeconn(curr);
+ }
+}
+
+void ngcs_close_channel(ngcs_channel * chan)
+{
+ if (chan->conn->fdw.fds >= 0)
+ if (ngcs_writemsg(chan->conn->fdw.fds, chan->id, NULL, -1))
+ closeconn_safe(chan->conn);
+ if (chan->cmd->free)
+ chan->cmd->free(chan);
+ list_del(&chan->list);
+ free(chan);
+}
+
+int ngcs_channel_send(ngcs_channel * chan, ngcs_data * data, int cnt)
+{
+ if (chan->conn->fdw.fds < 0)
+ return 1;
+ if (ngcs_writemsg(chan->conn->fdw.fds, chan->id, data, cnt))
+ {
+ closeconn_safe(chan->conn);
+ return 1;
+ }
+ return 0;
+}
+
+void ngcs_reg_cmd(ngcs_cmd * cmd)
+{
+ cmd->list.prev = 0;
+ cmd->list.next = 0;
+ list_add(&cmd->list, &ngcs_cmds.list);
}
#if 0
@@ -332,7 +393,7 @@
}
D_("Sending PING..\n");
- if (ngcs_sendmsg(NGCS_PING, 0, 123, NULL, 0));
+ if (ngcs_sendmsg(NGCS_PING, 0, 123, NULL, 0)) ;
{
F_("Unable to send PING!\n");
close(client);
@@ -342,7 +403,7 @@
/* Accept "server side" */
accepted_client(&fdh);
- /* FIXME: won't work anymore */
+ /* FIXME: won't work anymore */
D_("Reading PONG..\n");
if (ngcs_recvall(client, &head, sizeof(head)))
@@ -443,11 +504,11 @@
/* Run check : */
/* if (!sendping())
- {
- F_("Sendping check failed, ngcs comunication not available (if you see this open a bug)\n");
- closesock();
- return (FALSE);
- } */
+ {
+ F_("Sendping check failed, ngcs comunication not available (if you see this open a bug)\n");
+ closesock();
+ return (FALSE);
+ } */
return (TRUE);
}
@@ -501,7 +562,7 @@
int module_init(const char *version)
{
- D_("module_init(ngcs);\n");
+ D_("module_init(ngcs);\n");
if (strcmp(version, INITNG_VERSION) != 0)
{
F_("This module is compiled for \"%s\" version and initng is compiled on \"%s\" version, won't load this module!\n", INITNG_VERSION, version);
@@ -538,17 +599,20 @@
void module_unload(void)
{
- ngcs_conn *curr,*tmp;
+ ngcs_conn *curr, *tmp;
+
D_("module_unload(ngcs);\n");
/* close open sockets */
closesock();
- while_ngcs_conns_safe(curr,tmp) {
- closeconn(curr);
+ while_ngcs_conns_safe(curr, tmp)
+ {
+ closeconn(curr);
}
- while_ngcs_dead_conns_safe(curr,tmp) {
- closeconn(curr);
+ while_ngcs_dead_conns_safe(curr, tmp)
+ {
+ closeconn(curr);
}
unregister_ngcs_cmds();
Modified: initng/plugins/ngcs/initng_ngcs.h
==============================================================================
--- initng/plugins/ngcs/initng_ngcs.h (original)
+++ initng/plugins/ngcs/initng_ngcs.h Mon Jan 2 17:13:28 2006
@@ -35,31 +35,34 @@
int service_status(active_db_h * service);
void is_system_halt(h_sys_state state);
-void ngcs_close_channel(ngcs_channel* chan);
-void ngcs_reg_cmd(ngcs_cmd* cmd);
-int ngcs_channel_send(ngcs_channel* chan, ngcs_data* data, int cnt);
-
-struct ngcs_cmd_s {
- const char* name;
- void(*connect)(ngcs_channel*, ngcs_data*, int);
- void(*gotdata)(ngcs_channel*, ngcs_data*, int);
- void(*free)(ngcs_channel*);
- struct list_head list;
+void ngcs_close_channel(ngcs_channel * chan);
+void ngcs_reg_cmd(ngcs_cmd * cmd);
+int ngcs_channel_send(ngcs_channel * chan, ngcs_data * data, int cnt);
+
+struct ngcs_cmd_s
+{
+ const char *name;
+ void (*connect) (ngcs_channel *, ngcs_data *, int);
+ void (*gotdata) (ngcs_channel *, ngcs_data *, int);
+ void (*free) (ngcs_channel *);
+ struct list_head list;
};
-struct ngcs_channel_s {
- int id;
- ngcs_cmd* cmd;
- ngcs_conn* conn;
- void* user_data;
- struct list_head list;
+struct ngcs_channel_s
+{
+ int id;
+ ngcs_cmd *cmd;
+ ngcs_conn *conn;
+ void *user_data;
+ struct list_head list;
};
-struct ngcs_conn_s {
- f_module_h fdw;
- ngcs_channel chans;
- int nextid;
- struct list_head list;
+struct ngcs_conn_s
+{
+ f_module_h fdw;
+ ngcs_channel chans;
+ int nextid;
+ struct list_head list;
};
Modified: initng/plugins/ngcs/initng_ngcs_cmds.c
==============================================================================
--- initng/plugins/ngcs/initng_ngcs_cmds.c (original)
+++ initng/plugins/ngcs/initng_ngcs_cmds.c Mon Jan 2 17:13:28 2006
@@ -37,134 +37,172 @@
void register_ngcs_cmds(void);
void unregister_ngcs_cmds(void);
-static void ngcs_cmd_halt(ngcs_channel* chan, ngcs_data* data, int cnt);
-static void ngcs_cmd_reboot(ngcs_channel* chan, ngcs_data* data, int cnt);
+static void ngcs_cmd_halt(ngcs_channel * chan, ngcs_data * data, int cnt);
+static void ngcs_cmd_reboot(ngcs_channel * chan, ngcs_data * data, int cnt);
static int service_status_watch(active_db_h * service);
-static void ngcs_cmd_watch(ngcs_channel* chan, ngcs_data* data, int cnt);
-static void ngcs_free_watch(ngcs_channel* chan);
+static void ngcs_cmd_watch(ngcs_channel * chan, ngcs_data * data, int cnt);
+static void ngcs_free_watch(ngcs_channel * chan);
static int service_output_watch(active_db_h * service, process_h * x);
ngcs_cmd ngcs_halt_cmd = {
- "halt",
- ngcs_cmd_halt,
- NULL,
- NULL,
- { 0, 0 }
+ "halt",
+ ngcs_cmd_halt,
+ NULL,
+ NULL,
+ {0, 0}
};
ngcs_cmd ngcs_reboot_cmd = {
- "halt",
- ngcs_cmd_reboot,
- NULL,
- NULL,
- { 0, 0 }
+ "halt",
+ ngcs_cmd_reboot,
+ NULL,
+ NULL,
+ {0, 0}
};
ngcs_cmd ngcs_watch_cmd = {
- "watch",
- ngcs_cmd_watch,
- NULL,
- ngcs_free_watch,
- { 0, 0 }
+ "watch",
+ ngcs_cmd_watch,
+ NULL,
+ ngcs_free_watch,
+ {0, 0}
};
-typedef struct ngcs_watch_s {
- ngcs_channel* chan;
- char* name;
- struct list_head list;
+typedef struct ngcs_watch_s
+{
+ ngcs_channel *chan;
+ char *name;
+ struct list_head list;
} ngcs_watch;
ngcs_watch watches;
int service_status_watch(active_db_h * service)
{
- ngcs_watch *watch, *nextwatch; int n,ret; ngcs_data* dat = NULL;
- n = ngcs_marshal_active_db_h(service, NULL, 0);
- list_for_each_entry_prev_safe(watch, nextwatch, &watches.list, list) {
- if(watch->name == NULL || strcmp(watch->name, service->name) == 0) {
- if(!dat) {
- dat = malloc(n*sizeof(ngcs_data));
- ret = ngcs_marshal_active_db_h(service, dat, n);
- if(ret < 0) {
- F_("ngcs_marshal_active_db_h() failed!\n");
- free(dat); return TRUE;
- }
- }
- ngcs_channel_send(watch->chan, dat, ret);
+ ngcs_watch *watch, *nextwatch;
+ int n, ret;
+ ngcs_data *dat = NULL;
+
+ n = ngcs_marshal_active_db_h(service, NULL, 0);
+ list_for_each_entry_prev_safe(watch, nextwatch, &watches.list, list)
+ {
+ if (watch->name == NULL || strcmp(watch->name, service->name) == 0)
+ {
+ if (!dat)
+ {
+ dat = malloc(n * sizeof(ngcs_data));
+ ret = ngcs_marshal_active_db_h(service, dat, n);
+ if (ret < 0)
+ {
+ F_("ngcs_marshal_active_db_h() failed!\n");
+ free(dat);
+ return TRUE;
+ }
+ }
+ ngcs_channel_send(watch->chan, dat, ret);
+ }
}
- }
- if(dat) free(dat);
- return TRUE;
+ if (dat)
+ free(dat);
+ return TRUE;
}
static int service_output_watch(active_db_h * service, process_h * x)
{
- ngcs_watch *watch, *nextwatch; ngcs_data dat[2];
- dat[0].type = NGCS_TYPE_STRING; dat[0].size = -1;
- dat[0].d.s = service->name;
- dat[1].type = NGCS_TYPE_STRING; dat[1].size = -1;
- dat[1].d.s = x->buffer+x->buffer_pos;
- list_for_each_entry_prev_safe(watch, nextwatch, &watches.list, list) {
- if(watch->name == NULL || strcmp(watch->name, service->name) == 0) {
- ngcs_channel_send(watch->chan, dat, 2);
+ ngcs_watch *watch, *nextwatch;
+ ngcs_data dat[2];
+
+ dat[0].type = NGCS_TYPE_STRING;
+ dat[0].size = -1;
+ dat[0].d.s = service->name;
+ dat[1].type = NGCS_TYPE_STRING;
+ dat[1].size = -1;
+ dat[1].d.s = x->buffer + x->buffer_pos;
+ list_for_each_entry_prev_safe(watch, nextwatch, &watches.list, list)
+ {
+ if (watch->name == NULL || strcmp(watch->name, service->name) == 0)
+ {
+ ngcs_channel_send(watch->chan, dat, 2);
+ }
}
- }
- return FALSE; /* FIXME - right thing to do? */
+ return FALSE; /* FIXME - right thing to do? */
}
-void ngcs_cmd_watch(ngcs_channel* chan, ngcs_data* data, int cnt) {
- ngcs_watch* watch = malloc(sizeof(ngcs_watch));
- if(!watch) {
- F_("Malloc failed!\n");
- ngcs_close_channel(chan); return;
- }
- watch->chan = chan;
- if(cnt < 2 || data[1].type != NGCS_TYPE_STRING) {
- watch->name = NULL;
- } else {
- watch->name = i_strdup(data[1].d.s);
- if(!watch->name) {
- free(watch); F_("Malloc failed!\n");
- ngcs_close_channel(chan); return;
+void ngcs_cmd_watch(ngcs_channel * chan, ngcs_data * data, int cnt)
+{
+ ngcs_watch *watch = malloc(sizeof(ngcs_watch));
+
+ if (!watch)
+ {
+ F_("Malloc failed!\n");
+ ngcs_close_channel(chan);
+ return;
+ }
+ watch->chan = chan;
+ if (cnt < 2 || data[1].type != NGCS_TYPE_STRING)
+ {
+ watch->name = NULL;
+ }
+ else
+ {
+ watch->name = i_strdup(data[1].d.s);
+ if (!watch->name)
+ {
+ free(watch);
+ F_("Malloc failed!\n");
+ ngcs_close_channel(chan);
+ return;
+ }
}
- }
- watch->list.prev = 0; watch->list.next = 0;
- list_add(&watch->list, &watches.list);
- chan->user_data = watch;
+ watch->list.prev = 0;
+ watch->list.next = 0;
+ list_add(&watch->list, &watches.list);
+ chan->user_data = watch;
}
-void ngcs_free_watch(ngcs_channel* chan) {
- ngcs_watch* watch = chan->user_data;
- if(!watch) return;
- list_del(&watch->list);
- if(watch->name) free(watch->name);
- free(watch); chan->user_data = 0;
+void ngcs_free_watch(ngcs_channel * chan)
+{
+ ngcs_watch *watch = chan->user_data;
+
+ if (!watch)
+ return;
+ list_del(&watch->list);
+ if (watch->name)
+ free(watch->name);
+ free(watch);
+ chan->user_data = 0;
}
-void register_ngcs_cmds(void) {
- ngcs_reg_cmd(&ngcs_halt_cmd);
- ngcs_reg_cmd(&ngcs_reboot_cmd);
- ngcs_reg_cmd(&ngcs_watch_cmd);
- initng_plugin_hook_add(ASTATUS_CHANGE, 50, &service_status_watch);
- initng_plugin_hook_add(PIPEWATCHERS, 50, &service_output_watch);
- INIT_LIST_HEAD(&watches.list);
+void register_ngcs_cmds(void)
+{
+ ngcs_reg_cmd(&ngcs_halt_cmd);
+ ngcs_reg_cmd(&ngcs_reboot_cmd);
+ ngcs_reg_cmd(&ngcs_watch_cmd);
+ initng_plugin_hook_add(ASTATUS_CHANGE, 50, &service_status_watch);
+ initng_plugin_hook_add(PIPEWATCHERS, 50, &service_output_watch);
+ INIT_LIST_HEAD(&watches.list);
}
-void unregister_ngcs_cmds(void) {
- initng_plugin_hook_del(ASTATUS_CHANGE, &service_status_watch);
- initng_plugin_hook_del(PIPEWATCHERS, &service_output_watch);
- /* TODO */
+void unregister_ngcs_cmds(void)
+{
+ initng_plugin_hook_del(ASTATUS_CHANGE, &service_status_watch);
+ initng_plugin_hook_del(PIPEWATCHERS, &service_output_watch);
+ /* TODO */
}
-void ngcs_cmd_halt(ngcs_channel* chan, ngcs_data* data, int cnt) {
- (void) data; (void) cnt;
+void ngcs_cmd_halt(ngcs_channel * chan, ngcs_data * data, int cnt)
+{
+ (void) data;
+ (void) cnt;
g.when_out = THEN_HALT;
initng_handler_stop_all();
ngcs_close_channel(chan);
}
-void ngcs_cmd_reboot(ngcs_channel* chan, ngcs_data* data, int cnt) {
- (void) data; (void) cnt;
+void ngcs_cmd_reboot(ngcs_channel * chan, ngcs_data * data, int cnt)
+{
+ (void) data;
+ (void) cnt;
g.when_out = THEN_REBOOT;
initng_handler_stop_all();
ngcs_close_channel(chan);
Modified: initng/plugins/ngcs/ngcs_common.c
==============================================================================
--- initng/plugins/ngcs/ngcs_common.c (original)
+++ initng/plugins/ngcs/ngcs_common.c Mon Jan 2 17:13:28 2006
@@ -4,115 +4,170 @@
#include <sys/un.h>
#include <assert.h>
-int ngcs_writemsg(int sock, int chan, ngcs_data* data, int cnt) {
- int head[2]; int n;
- head[0] = chan; head[1] = cnt;
- if(ngcs_sendall(sock,head,2*sizeof(int))) return 1;
- for(n = 0; n < cnt; n++) {
- head[0] = data[n].type;
- switch(data[n].type) {
- case NGCS_TYPE_GROUP:
- case NGCS_TYPE_INT:
- head[1] = sizeof(int);
- if(ngcs_sendall(sock,head,2*sizeof(int))) return 1;
- if(ngcs_sendall(sock,&data[n].d.i,sizeof(int))) return 1;
- break;
- case NGCS_TYPE_LONG:
- head[1] = sizeof(long);
- if(ngcs_sendall(sock,head,2*sizeof(int))) return 1;
- if(ngcs_sendall(sock,&data[n].d.l,sizeof(long))) return 1;
- break;
- case NGCS_TYPE_STRING:
- if(data[n].size<0) data[n].size = strlen(data[n].d.s);
- head[1] = data[n].size;
- if(ngcs_sendall(sock,head,2*sizeof(int))) return 1;
- if(ngcs_sendall(sock,data[n].d.s,data[n].size)) return 1;
- break;
- default:
- if(data[n].size<0) return 1;
- head[1] = data[n].size;
- if(ngcs_sendall(sock,head,2*sizeof(int))) return 1;
- if(ngcs_sendall(sock,data[n].d.p,data[n].size)) return 1;
- break;
- }
+int ngcs_writemsg(int sock, int chan, ngcs_data * data, int cnt)
+{
+ int head[2];
+ int n;
+
+ head[0] = chan;
+ head[1] = cnt;
+ if (ngcs_sendall(sock, head, 2 * sizeof(int)))
+ return 1;
+ for (n = 0; n < cnt; n++)
+ {
+ head[0] = data[n].type;
+ switch (data[n].type)
+ {
+ case NGCS_TYPE_GROUP:
+ case NGCS_TYPE_INT:
+ head[1] = sizeof(int);
+ if (ngcs_sendall(sock, head, 2 * sizeof(int)))
+ return 1;
+ if (ngcs_sendall(sock, &data[n].d.i, sizeof(int)))
+ return 1;
+ break;
+ case NGCS_TYPE_LONG:
+ head[1] = sizeof(long);
+ if (ngcs_sendall(sock, head, 2 * sizeof(int)))
+ return 1;
+ if (ngcs_sendall(sock, &data[n].d.l, sizeof(long)))
+ return 1;
+ break;
+ case NGCS_TYPE_STRING:
+ if (data[n].size < 0)
+ data[n].size = strlen(data[n].d.s);
+ head[1] = data[n].size;
+ if (ngcs_sendall(sock, head, 2 * sizeof(int)))
+ return 1;
+ if (ngcs_sendall(sock, data[n].d.s, data[n].size))
+ return 1;
+ break;
+ default:
+ if (data[n].size < 0)
+ return 1;
+ head[1] = data[n].size;
+ if (ngcs_sendall(sock, head, 2 * sizeof(int)))
+ return 1;
+ if (ngcs_sendall(sock, data[n].d.p, data[n].size))
+ return 1;
+ break;
+ }
}
return 0;
}
-int ngcs_readmsg(int sock, int *chan, ngcs_data** data, int *cnt) {
- int head[2]; int n;
- if(ngcs_recvall(sock,head,2*sizeof(int))) return 1;
- *chan = head[0]; *cnt = head[1];
+int ngcs_readmsg(int sock, int *chan, ngcs_data ** data, int *cnt)
+{
+ int head[2];
+ int n;
+ if (ngcs_recvall(sock, head, 2 * sizeof(int)))
+ return 1;
+ *chan = head[0];
+ *cnt = head[1];
*data = NULL;
- if(*cnt <= 0) return 0;
- *data = malloc((*cnt)*sizeof(ngcs_data));
- if(!*data) return 1;
- for(n = 0; n < *cnt; n++) {
- if(ngcs_recvall(sock, head,2*sizeof(int))) return 1;
- if(head[1] < 0) return 1;
- (*data)[n].type = head[0]; (*data)[n].size = head[1];
- switch((*data)[n].type) {
- case NGCS_TYPE_GROUP:
- case NGCS_TYPE_INT:
- if((*data)[n].size != sizeof(int)) return 1;
- if(ngcs_recvall(sock,&(*data)[n].d.i,sizeof(int))) return 1;
- break;
- case NGCS_TYPE_STRING:
- (*data)[n].d.s = malloc((*data)[n].size+1);
- if(!(*data)[n].d.s) return 1;
- if(ngcs_recvall(sock,(*data)[n].d.s,(*data)[n].size)) return 1;
- (*data)[n].d.s[(*data)[n].size] = 0;
- break;
- default:
- (*data)[n].d.p = malloc((*data)[n].size);
- if(!(*data)[n].d.p) return 1;
- if(ngcs_recvall(sock,(*data)[n].d.p,(*data)[n].size)) return 1;
- break;
- }
+ if (*cnt <= 0)
+ return 0;
+ *data = malloc((*cnt) * sizeof(ngcs_data));
+ if (!*data)
+ return 1;
+ for (n = 0; n < *cnt; n++)
+ {
+ if (ngcs_recvall(sock, head, 2 * sizeof(int)))
+ return 1;
+ if (head[1] < 0)
+ return 1;
+ (*data)[n].type = head[0];
+ (*data)[n].size = head[1];
+ switch ((*data)[n].type)
+ {
+ case NGCS_TYPE_GROUP:
+ case NGCS_TYPE_INT:
+ if ((*data)[n].size != sizeof(int))
+ return 1;
+ if (ngcs_recvall(sock, &(*data)[n].d.i, sizeof(int)))
+ return 1;
+ break;
+ case NGCS_TYPE_STRING:
+ (*data)[n].d.s = malloc((*data)[n].size + 1);
+ if (!(*data)[n].d.s)
+ return 1;
+ if (ngcs_recvall(sock, (*data)[n].d.s, (*data)[n].size))
+ return 1;
+ (*data)[n].d.s[(*data)[n].size] = 0;
+ break;
+ default:
+ (*data)[n].d.p = malloc((*data)[n].size);
+ if (!(*data)[n].d.p)
+ return 1;
+ if (ngcs_recvall(sock, (*data)[n].d.p, (*data)[n].size))
+ return 1;
+ break;
+ }
}
return 0;
}
-void ngcs_freedata(ngcs_data* data, int cnt) {
- int i;
- if(!data || cnt < 0) return;
- for(i = 0; i < cnt; i++) {
- switch(data[i].type) {
- case NGCS_TYPE_INT:
- break;
- case NGCS_TYPE_STRING:
- if(data[i].d.s) free(data[i].d.s);
- break;
- default:
- if(data[i].d.p) free(data[i].d.p);
- break;
+void ngcs_freedata(ngcs_data * data, int cnt)
+{
+ int i;
+
+ if (!data || cnt < 0)
+ return;
+ for (i = 0; i < cnt; i++)
+ {
+ switch (data[i].type)
+ {
+ case NGCS_TYPE_INT:
+ break;
+ case NGCS_TYPE_STRING:
+ if (data[i].d.s)
+ free(data[i].d.s);
+ break;
+ default:
+ if (data[i].d.p)
+ free(data[i].d.p);
+ break;
+ }
}
- }
- free(data);
+ free(data);
}
-int ngcs_sendall(int sock, const void* buf, int len) {
- int ret;
- while(len > 0) {
- ret = send(sock, buf, len, 0);
- if(ret <= 0) {
- return 1;
- } else {
- buf += ret; len -= ret;
+int ngcs_sendall(int sock, const void *buf, int len)
+{
+ int ret;
+
+ while (len > 0)
+ {
+ ret = send(sock, buf, len, 0);
+ if (ret <= 0)
+ {
+ return 1;
+ }
+ else
+ {
+ buf += ret;
+ len -= ret;
+ }
}
- }
- return 0;
+ return 0;
}
-int ngcs_recvall(int sock, void* buf, int len) {
- int ret;
- while(len > 0) {
- ret = recv(sock, buf, len, 0);
- if(ret <= 0) {
- return 1;
- } else {
- buf += ret; len -= ret;
+int ngcs_recvall(int sock, void *buf, int len)
+{
+ int ret;
+
+ while (len > 0)
+ {
+ ret = recv(sock, buf, len, 0);
+ if (ret <= 0)
+ {
+ return 1;
+ }
+ else
+ {
+ buf += ret;
+ len -= ret;
+ }
}
- }
- return 0;
+ return 0;
}
Modified: initng/plugins/ngcs/ngcs_common.h
==============================================================================
--- initng/plugins/ngcs/ngcs_common.h (original)
+++ initng/plugins/ngcs/ngcs_common.h Mon Jan 2 17:13:28 2006
@@ -13,21 +13,23 @@
#define NGCS_TYPE_LONG 4
#define NGCS_TYPE_GROUP 5
-typedef struct ngcs_data_s {
- int type;
- int size;
- union {
- int i;
- long l;
- char* s;
- void* p;
- } d;
+typedef struct ngcs_data_s
+{
+ int type;
+ int size;
+ union
+ {
+ int i;
+ long l;
+ char *s;
+ void *p;
+ } d;
} ngcs_data;
-int ngcs_sendall(int sock, const void* buf, int len);
-int ngcs_recvall(int sock, void* buf, int len);
-int ngcs_writemsg(int sock, int chan, ngcs_data* data, int cnt);
-int ngcs_readmsg(int sock, int *chan, ngcs_data** data, int *cnt);
-void ngcs_freedata(ngcs_data* data, int cnt);
+int ngcs_sendall(int sock, const void *buf, int len);
+int ngcs_recvall(int sock, void *buf, int len);
+int ngcs_writemsg(int sock, int chan, ngcs_data * data, int cnt);
+int ngcs_readmsg(int sock, int *chan, ngcs_data ** data, int *cnt);
+void ngcs_freedata(ngcs_data * data, int cnt);
#endif
More information about the Initng-svn
mailing list