#include <signal.h>
#include <sys/stat.h>
#include <string.h>
-#include <qlist.h>
-#include <qfile.h>
-#include <qstring.h>
-#include <qstringlist.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/QDir>
#include <unistd.h>
#include <libconfig.h>
char kername[256];
/* List of the Interpeter slots */
- QList<INTlink> Interpreters;
+ QList<INTlink*> Interpreters;
/* List of the Network slots */
- QList<NETlink> Links;
+ QList<NETlink*> Links;
- NETMOD(char*);
+ NETMOD(int argc, char ** argv);
- void load_config(char*);
+ void load_config(const char*);
void write_at_console(char*);
void send_to_kernel(MESSAGE*);
void sock_reopen(NETlink*);
void doitall();
};
-NETMOD::NETMOD(char *kernel_name)
+NETMOD::NETMOD(int argc, char ** argv)
{
+ QString kernelSocket(argv[1]);
+ QString configFile(argv[2]);
+
int i;
int len;
int on;
Links.clear();
Interpreters.clear();
- bzero(&svr, sizeof(svr));
+ bzero(&svr, sizeof(svr));
listen_sock = socket(AF_INET, SOCK_STREAM, 0);
svr.sin_family = AF_INET;
svr.sin_addr.s_addr = INADDR_ANY;
svr.sin_port = htons(LOGPORT);
bind(listen_sock, (struct sockaddr*)&svr, sizeof(svr));
listen(listen_sock,5);
- fcntl(listen_sock, F_SETFL, O_NONBLOCK | fcntl(listen_sock, F_GETFL,
- 0));
+ fcntl(listen_sock, F_SETFL, O_NONBLOCK | fcntl(listen_sock, F_GETFL, 0));
to_connect = 0;
all_connected = FALSE;
- load_config("vlp.cfg");
+
+ load_config(configFile.toStdString().c_str());
kernel_sock = socket(AF_UNIX, SOCK_STREAM, 0);
bzero(&svr1, sizeof(svr1));
svr1.sun_family = AF_UNIX;
- strcpy(svr1.sun_path, kernel_name);
- strcpy(kername, kernel_name);
+ strcpy(svr1.sun_path, kernelSocket.toStdString().c_str());
+ strcpy(kername, kernelSocket.toStdString().c_str());
len = strlen(svr1.sun_path) + sizeof(svr1.sun_family);
i = connect(kernel_sock, (struct sockaddr*)&svr1, len);
if (i == 0)
- fcntl(kernel_sock, F_SETFL, O_NONBLOCK|fcntl(kernel_sock, F_GETFL, 0));
+ fcntl(kernel_sock, F_SETFL, O_NONBLOCK|fcntl(kernel_sock, F_GETFL, 0));
on = 1;
- setsockopt(kernel_sock, IPPROTO_TCP, TCP_NODELAY, (char*)&on,
- sizeof(on));
+ setsockopt(kernel_sock, IPPROTO_TCP, TCP_NODELAY, (char*)&on, sizeof(on));
m.msg_type = MSG_NET;
m.param.pword[0] = NET_NODE;
m.param.pword[1] = MyNode;
/*##################### Load configuration ##########################*/
-void NETMOD::load_config(char *fname)
+void NETMOD::load_config(const char *fname)
{
config_t cfg;
config_setting_t *setting;
/* Hack for checking if file exists without using external libs.*/
FILE * file = fopen(fname, "rt");
if (!file) {
- fprintf(stderr, "Error: Cannot load configuration file %s!\n",
- fname);
+ fprintf(stderr, "[Error]/Lognet: Cannot load configuration file %s!\n", fname);
write_at_console("Cannot load configuration file!");
fclose(file);
exit(3);
break;
case CONFIG_TYPE_ARRAY:
strncpy(pomlink->addr,
- config_setting_get_string_elem(setting, 0),
- 255);
+ config_setting_get_string_elem(setting, 0), 255);
break;
default:
fprintf(stderr, "%s! In file %s, bad entry type for %s."
strcpy(m.param.pstr, pomlink->addr);
break;
}
- pomlink = Links.next();
+ pomlink = Links.takeFirst();
}
write(sc, &m, sizeof(MESSAGE));
}
int sj;
fd_set readset;
fd_set writeset;
- struct timeval tout={0, 0};
+ struct timeval tout= {0, 0};
INTlink *pomlink;
struct sockaddr_un svr;
if (nrset < pomlink->sock) {
nrset = pomlink->sock;
}
- pomlink = Interpreters.next();
+ pomlink = Interpreters.takeFirst();
}
if (select(nrset + 1, &readset, &writeset, 0, (struct timeval *)&tout) >
}
}
} /* ISSET */
- pomlink=Interpreters.next();
+ pomlink=Interpreters.takeFirst();
} // while
/* Check internal socket */
pomlink = findINTlink(msg.param.pword[1]);
if (pomlink != NULL) {
close(pomlink->sock);
- Interpreters.remove(pomlink);
+ Interpreters.removeOne(pomlink);
}
};
break;
msg.param.pword[1]);
write_at_console(pomstr);
::close(lnk->sock);
- Links.remove(lnk);
+ Links.removeOne(lnk);
delete lnk;
break;
case NET_PROPAGATE:
max = pomlink->sock;
}
}
- pomlink=Links.next();
+ pomlink=Links.takeFirst();
}
if (select(max + 1, &rset, &wset, 0, (struct timeval *)&tout) > 0) {
if (FD_ISSET(pomlink->sock,&rset)) {
get_message(pomlink);
}
- pomlink=Links.next();
+ pomlink=Links.takeFirst();
}
}
}
if (max < pomlink2->sock) {
max=pomlink2->sock;
}
- pomlink2 = Interpreters.next();
+ pomlink2 = Interpreters.takeFirst();
}
pomlink = Links.first();
while (pomlink != NULL) {
max = pomlink->sock;
}
}
- pomlink=Links.next();
+ pomlink=Links.takeFirst();
}
/* odczyt */
}
}
}/* ISSET */
- pomlink2 = Interpreters.next();
+ pomlink2 = Interpreters.takeFirst();
}/* while */
/* Check internal socket */
pomlink2 = findINTlink(msg.param.pword[1]);
if (pomlink2 != NULL) {
close(pomlink2->sock);
- Interpreters.remove(pomlink2);
+ Interpreters.removeOne(pomlink2);
}
};
break;
while (pomlink != NULL) {
if (FD_ISSET(pomlink->sock, &rset))
get_message(pomlink);
- pomlink=Links.next();
+ pomlink=Links.takeFirst();
}
} // select
}
while (pom != NULL) {
if (strcmp(pom->addr, a) == 0)
return;
- pom = Links.next();
+ pom = Links.takeFirst();
}
pom = new NETlink;
strcpy(pom->addr, a);
sock_reopen(pomlink);
}
} /* not connected */
- pomlink = Links.next();
+ pomlink = Links.takeFirst();
} /* while */
} /* if */
all_connected = TRUE;
all_connected = FALSE;
break;
}
- pomlink = Links.next();
+ pomlink = Links.takeFirst();
}
}
pomlink = Links.first();
while (pomlink != NULL) {
write(pomlink->sock, msg, sizeof(MESSAGE));
- pomlink = Links.next();
+ pomlink = Links.takeFirst();
}
}
pomlink = Links.first();
while (pomlink != NULL) {
::close(pomlink->sock);
- pomlink = Links.next();
+ pomlink = Links.takeFirst();
}
exit(0);
}
p = Links.first();
while(p != NULL) {
send_to_node(p, &m);
- p=Links.next();
+ p=Links.takeFirst();
}
p = Links.first();
while(p != NULL) {
::close(p->sock);
- p = Links.next();
+ p = Links.takeFirst();
}
Links.clear();
}
if (pomlink->node_number == node)
return pomlink;
- pomlink = Links.next();
+ pomlink = Links.takeFirst();
}
return pomlink;
}
while(pomlink != NULL) {
if (pomlink->ID == id)
return pomlink;
- pomlink = Interpreters.next();
+ pomlink = Interpreters.takeFirst();
}
return pomlink;
}
write(sk, &m, sizeof(MESSAGE));
k = 0;
}
- pom = Links.next();
+ pom = Links.takeFirst();
}
if (k > 0) {
m.param.pword[1] = k;
write(sk, &m, sizeof(MESSAGE));
}
+/**
+ * argv0 = program current path
+ * argv1 = socket path
+ * argv2 = config path
+ */
int main(int argc, char **argv)
{
- NETMOD netter(argv[1]);
+ if (argc < 3) {
+ return 1;
+ }
+
+ fprintf(stderr, "lognet: Net module path: %s\n", argv[0]);
+ fprintf(stderr, "lognet: Kernel socket: %s\n", argv[1]);
+ fprintf(stderr, "lognet: Configuration file: %s\n", argv[2]);
+
+ NETMOD netter(argc, argv);
netter.run();
return 0;
}