2014-06-02 07:14:19 +00:00
|
|
|
#include <pthread.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
2014-06-03 05:06:48 +00:00
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
#include <utmp.h>
|
2014-06-03 05:06:48 +00:00
|
|
|
#include <sys/un.h>
|
2014-06-03 17:55:39 +00:00
|
|
|
#include <unistd.h>
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
#include <time.h>
|
2014-06-02 07:14:19 +00:00
|
|
|
#include <errno.h>
|
|
|
|
#include "Netsukuku-Console.h"
|
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
int sockfd, sockfd1, sendrecv;
|
|
|
|
struct sockaddr_un serveraddr;
|
|
|
|
struct sockaddr ntkdaddr;
|
|
|
|
int rc, length, exit_now;
|
|
|
|
char *request, *response;
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
time_t rawtime;
|
|
|
|
struct tm *timeinfo;
|
|
|
|
|
|
|
|
int uptime_sec;
|
|
|
|
int uptime_min;
|
|
|
|
int uptime_hr;
|
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
void usage();
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
void clean_up();
|
|
|
|
|
|
|
|
int validity_check(void) {
|
2014-06-02 07:14:19 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
if(request && strncmp(request, "null", (int)strlen(request)) != 0) {
|
|
|
|
|
|
|
|
if(strncmp(request,"help", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 1;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"uptime", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"kill", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 2;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"version", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 3;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"console_uptime", (int)strlen(request)) == 0)
|
2014-06-03 17:55:39 +00:00
|
|
|
return 4;
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"inet_connected", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"cur_ifs", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"cur_ifs_n", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"cur_qspn_id", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"cur_ip", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"cur_node", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"ifs", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
else if(strncmp(request,"ifs_n", (int)strlen(request)) == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
return 0;
|
2014-06-03 17:55:39 +00:00
|
|
|
|
|
|
|
else {
|
2014-06-03 05:06:48 +00:00
|
|
|
printf("Incorrect or unreadable command, Please correct it.\n");
|
|
|
|
return -1;
|
2014-06-03 17:55:39 +00:00
|
|
|
}
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return -2;
|
2014-06-03 05:06:48 +00:00
|
|
|
|
2014-06-02 07:14:19 +00:00
|
|
|
}
|
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
/* this function is run by the second thread */
|
|
|
|
void *ntkd_request(void *argv) {
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
while(usleep(200)) {
|
|
|
|
while(request && sendrecv == 1 && strncmp(request, "null", (int)strlen(request) != 0)) {
|
|
|
|
rc = sendto(sockfd1, request, strlen(request), 0, (struct sockaddr *)&serveraddr, (socklen_t)sizeof(&serveraddr));
|
|
|
|
if (rc < 0) {
|
|
|
|
perror("sendto() failed");
|
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
|
|
|
|
rc = recvfrom(sockfd1, response, strlen(response), MSG_WAITALL, (struct sockaddr *)&ntkdaddr, (socklen_t *__restrict)sizeof(&ntkdaddr));
|
2014-06-03 05:06:48 +00:00
|
|
|
if (rc < 0) {
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
perror("recvfrom() failed");
|
2014-06-03 05:06:48 +00:00
|
|
|
exit(-1);
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if(rc >= 0) {
|
|
|
|
printf("Sent and received Successfully!\n The Response was) %s", response);
|
|
|
|
|
|
|
|
}
|
2014-06-03 05:06:48 +00:00
|
|
|
|
2014-06-02 07:14:19 +00:00
|
|
|
}
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
}
|
|
|
|
return 0;
|
2014-06-03 05:06:48 +00:00
|
|
|
}
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
void opensocket(void) {
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
|
|
|
|
if (sockfd < 0) {
|
|
|
|
perror("socket creation failed");
|
|
|
|
exit(-1);
|
2014-06-02 07:14:19 +00:00
|
|
|
}
|
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
memset(&serveraddr, 0, sizeof(serveraddr));
|
|
|
|
serveraddr.sun_family = AF_UNIX;
|
|
|
|
strcpy(serveraddr.sun_path, SERVER_PATH);
|
|
|
|
|
|
|
|
rc = bind(sockfd, (struct sockaddr *)&serveraddr, SUN_LEN(&serveraddr));
|
|
|
|
if (rc < 0) {
|
|
|
|
perror("bind() failed");
|
2014-06-03 17:55:39 +00:00
|
|
|
clean_up();
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
opensocket();
|
2014-06-03 05:06:48 +00:00
|
|
|
}
|
2014-06-02 07:14:19 +00:00
|
|
|
}
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
void console_uptime(void) {
|
|
|
|
|
|
|
|
int uptime_sec1;
|
|
|
|
int uptime_min1;
|
|
|
|
int uptime_hr1;
|
|
|
|
|
|
|
|
time(&rawtime);
|
|
|
|
|
|
|
|
timeinfo = localtime(&rawtime);
|
|
|
|
|
|
|
|
uptime_sec1 = timeinfo->tm_sec;
|
|
|
|
uptime_min1 = timeinfo->tm_min;
|
|
|
|
uptime_hr1 = timeinfo->tm_hour;
|
|
|
|
|
|
|
|
uptime_sec1 -= uptime_sec;
|
|
|
|
uptime_min1 -= uptime_min;
|
|
|
|
uptime_hr1 -= uptime_hr;
|
|
|
|
|
|
|
|
printf("Total Uptime is: %i, %i, %i\n", uptime_hr1, uptime_min1, uptime_sec1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
void console(void) {
|
2014-06-02 07:14:19 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
char request_buf[16];
|
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
exit_now = 1;
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
while(exit_now == 1) {
|
2014-06-03 17:55:39 +00:00
|
|
|
printf("\n>");
|
2014-06-03 05:06:48 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
fgets(request_buf, 16, stdin);
|
|
|
|
|
|
|
|
strcpy(request, request_buf);
|
|
|
|
|
|
|
|
if(validity_check() == -2)
|
|
|
|
printf("Error: Command has not been processed!");
|
2014-06-03 17:55:39 +00:00
|
|
|
|
|
|
|
if(validity_check() == -1)
|
2014-06-03 05:06:48 +00:00
|
|
|
usage();
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
if(strncmp(request,"quit", (int)strlen(request)) == 0) {
|
2014-06-03 17:55:39 +00:00
|
|
|
exit_now = 2;
|
|
|
|
clean_up();
|
2014-06-03 05:06:48 +00:00
|
|
|
exit(0);
|
2014-06-03 17:55:39 +00:00
|
|
|
}
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
if(validity_check() == 0)
|
2014-06-03 05:06:48 +00:00
|
|
|
sendrecv = 1;
|
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
if(validity_check() == 1)
|
2014-06-03 05:06:48 +00:00
|
|
|
usage();
|
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
if(validity_check() == 2)
|
2014-06-03 05:06:48 +00:00
|
|
|
system("ntkd -k");
|
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
if(validity_check() == 3) {
|
2014-06-03 05:06:48 +00:00
|
|
|
printf("%s", VERSION_STR);
|
|
|
|
sendrecv = 1;
|
|
|
|
}
|
2014-06-03 17:55:39 +00:00
|
|
|
|
|
|
|
if(validity_check() == 4)
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
console_uptime();
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
sendrecv = 0;
|
|
|
|
}
|
|
|
|
}
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
int main(void) {
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
|
|
|
|
char request_buf[16];
|
|
|
|
|
|
|
|
printf("\n>");
|
|
|
|
|
|
|
|
fgets(request_buf, 16, stdin);
|
|
|
|
|
|
|
|
printf("uhm %s", request_buf);
|
2014-06-03 05:06:48 +00:00
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
sendrecv = 0;
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
/*request = "null";*/
|
|
|
|
|
|
|
|
time(&rawtime);
|
|
|
|
|
|
|
|
timeinfo = localtime(&rawtime);
|
|
|
|
|
|
|
|
uptime_sec = timeinfo->tm_sec;
|
|
|
|
uptime_min = timeinfo->tm_min;
|
|
|
|
uptime_hr = timeinfo->tm_hour;
|
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
opensocket();
|
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
printf("This is the Netsukuku Console, Please type 'help' for more information.\n");
|
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
/* This variable is our reference to the second thread */
|
|
|
|
pthread_t NtkdRequest;
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
/* Create a second thread which executes ntkd_request() */
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
if(pthread_create(&NtkdRequest, NULL, ntkd_request, 0)) {
|
2014-06-03 05:06:48 +00:00
|
|
|
fprintf(stderr, "Error creating thread\n");
|
|
|
|
return -1;
|
|
|
|
}
|
2014-06-02 07:14:19 +00:00
|
|
|
|
2014-06-03 05:06:48 +00:00
|
|
|
/* Detach the second thread */
|
2014-06-03 17:55:39 +00:00
|
|
|
if(pthread_detach(NtkdRequest)) {
|
|
|
|
fprintf(stderr, "Error detaching thread\n");
|
|
|
|
return -2;
|
|
|
|
}
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
|
|
|
|
console();
|
2014-06-03 05:06:48 +00:00
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
return 0;
|
2014-06-03 05:06:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void usage(void) {
|
|
|
|
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
printf("Usage\n"
|
2014-06-03 17:55:39 +00:00
|
|
|
" uptime Returns the time when ntkd finished the hooking,"
|
|
|
|
"to get the the actual uptime just do) "
|
2014-06-03 05:06:48 +00:00
|
|
|
"time(0)-me.uptime \n"
|
|
|
|
" help Shows this\n"
|
|
|
|
" kill Kills the running instance of netsukuku with SIGINT\n\n"
|
|
|
|
" version Shows the running version of ntkd and ntk-console\n"
|
|
|
|
" inet_connected If it is 1, Ntkd is connected to the Internet\n"
|
|
|
|
"\n"
|
|
|
|
" cur_ifs Lists all of the interfaces in cur_ifs\n"
|
|
|
|
" cur_ifs_n Lists the number of interfaces present in `cur_ifs'\n"
|
2014-06-03 17:55:39 +00:00
|
|
|
"\n");
|
|
|
|
printf(" cur_qspn_id The current qspn_id we are processing. "
|
2014-06-03 05:06:48 +00:00
|
|
|
"It is cur_qspn_id[levels] big\n"
|
|
|
|
" cur_ip Current IP address\n"
|
|
|
|
"\n"
|
|
|
|
" cur_node Current Node\n"
|
|
|
|
" ifs Lists all of the interfaces in server_opt.ifs\n"
|
|
|
|
" ifs_n Lists the number of interfaces present in server_opt.ifs\n"
|
|
|
|
" quit Exits this program\n"
|
Wow! I've done A LOT of work on the netsukuku console recently! I still haven't set up any way for ntkd to receive the commands, Or done much of anything in netsukuku itself recently except change some stuff in the exclude function to prevent possible errors if an interface had the same name up until the end of the one specified. I.E if it had tunl012, It wouldn't work because it had tunl0 in the beginning. Now, It will read from the entire length of the variable, And if it doesn't match it entirely, Then it is okay.
Anyway! The netsukuku console is almost ready! I just keep getting this weird issue around fgets() not working at all in console(). It causes the program to spam the > symbol. It functions in main()! However, After that, It has a segmentation fault. I've been trying everything I can think of, One thing made it not do a segmentation fault, However! The fgets() inside of console() still didn't work, So, It just spammed endlessly. Anyone who can, Please help! I've been working on this for a while! :/
2014-06-04 10:47:49 +00:00
|
|
|
" console_uptime Gets the uptime of this console\n");
|
2014-06-03 05:06:48 +00:00
|
|
|
|
2014-06-03 17:55:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void clean_up(void) {
|
|
|
|
|
|
|
|
const int optVal = 1;
|
|
|
|
const socklen_t optLen = sizeof(optVal);
|
|
|
|
|
|
|
|
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (void*) &optVal, optLen);
|
|
|
|
setsockopt(sockfd1, SOL_SOCKET, SO_REUSEADDR, (void*) &optVal, optLen);
|
|
|
|
|
|
|
|
if (sockfd != -1)
|
|
|
|
close(sockfd);
|
|
|
|
|
|
|
|
if (sockfd1 != -1)
|
|
|
|
close(sockfd1);
|
|
|
|
|
|
|
|
unlink(SERVER_PATH);
|
|
|
|
|
2014-06-02 07:14:19 +00:00
|
|
|
}
|