#include <QtCore/qfile.h>
#include <QtCore/qstring.h>
#include <QtCore/qstringlist.h>
+#include <QtCore/QDir>
#include <unistd.h>
#include <libconfig.h>
/* List of the Network slots */
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."
int sj;
fd_set readset;
fd_set writeset;
- struct timeval tout={0, 0};
+ struct timeval tout= {0, 0};
INTlink *pomlink;
struct sockaddr_un svr;
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;
}