mirror of
https://github.com/berlin-open-wireless-lab/DAWN.git
synced 2025-03-09 15:40:12 +00:00
Reformat code
This commit is contained in:
parent
fa52176cd8
commit
325cbc764c
6 changed files with 989 additions and 1048 deletions
|
|
@ -9,33 +9,33 @@
|
|||
#include "broadcastsocket.h"
|
||||
|
||||
int setup_broadcast_socket(const char *_broadcast_ip, unsigned short _broadcast_port, struct sockaddr_in *addr) {
|
||||
int sock;
|
||||
int broadcast_permission;
|
||||
int sock;
|
||||
int broadcast_permission;
|
||||
|
||||
/* Create socket */
|
||||
if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
|
||||
fprintf(stderr, "Failed to create socket.\n");
|
||||
return -1;
|
||||
}
|
||||
/* Create socket */
|
||||
if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
|
||||
fprintf(stderr, "Failed to create socket.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Allow broadcast */
|
||||
broadcast_permission = 1;
|
||||
if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (void *)&broadcast_permission,
|
||||
sizeof(broadcast_permission)) < 0) {
|
||||
fprintf(stderr, "Failed to create socket.\n");
|
||||
return -1;
|
||||
}
|
||||
/* Allow broadcast */
|
||||
broadcast_permission = 1;
|
||||
if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (void *) &broadcast_permission,
|
||||
sizeof(broadcast_permission)) < 0) {
|
||||
fprintf(stderr, "Failed to create socket.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Construct Address */
|
||||
memset(addr, 0, sizeof(*addr));
|
||||
addr->sin_family = AF_INET;
|
||||
addr->sin_addr.s_addr = inet_addr(_broadcast_ip);
|
||||
addr->sin_port = htons(_broadcast_port);
|
||||
/* Construct Address */
|
||||
memset(addr, 0, sizeof(*addr));
|
||||
addr->sin_family = AF_INET;
|
||||
addr->sin_addr.s_addr = inet_addr(_broadcast_ip);
|
||||
addr->sin_port = htons(_broadcast_port);
|
||||
|
||||
if (bind(sock, (struct sockaddr *)addr, sizeof(*addr)) <
|
||||
0) {
|
||||
fprintf(stderr, "Binding socket failed!\n");
|
||||
return -1;
|
||||
}
|
||||
return sock;
|
||||
if (bind(sock, (struct sockaddr *) addr, sizeof(*addr)) <
|
||||
0) {
|
||||
fprintf(stderr, "Binding socket failed!\n");
|
||||
return -1;
|
||||
}
|
||||
return sock;
|
||||
}
|
||||
|
|
@ -13,59 +13,58 @@
|
|||
|
||||
static struct ip_mreq command; /* static ?! */
|
||||
|
||||
int setup_multicast_socket(const char *_multicast_ip, unsigned short _multicast_port, struct sockaddr_in *addr)
|
||||
{
|
||||
int loop = 1;
|
||||
int sock;
|
||||
int setup_multicast_socket(const char *_multicast_ip, unsigned short _multicast_port, struct sockaddr_in *addr) {
|
||||
int loop = 1;
|
||||
int sock;
|
||||
|
||||
memset (addr, 0, sizeof (*addr));
|
||||
addr->sin_family = AF_INET;
|
||||
addr->sin_addr.s_addr = htonl (INADDR_ANY);
|
||||
addr->sin_port = htons (_multicast_port);
|
||||
memset(addr, 0, sizeof(*addr));
|
||||
addr->sin_family = AF_INET;
|
||||
addr->sin_addr.s_addr = htonl (INADDR_ANY);
|
||||
addr->sin_port = htons (_multicast_port);
|
||||
|
||||
if ( ( sock = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
|
||||
perror ("socket()");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
|
||||
perror("socket()");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Mehr Prozessen erlauben, denselben Port zu nutzen */
|
||||
loop = 1;
|
||||
if (setsockopt ( sock,
|
||||
/* Mehr Prozessen erlauben, denselben Port zu nutzen */
|
||||
loop = 1;
|
||||
if (setsockopt(sock,
|
||||
SOL_SOCKET,
|
||||
SO_REUSEADDR,
|
||||
&loop, sizeof (loop)) < 0) {
|
||||
perror ("setsockopt:SO_REUSEADDR");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
if(bind( sock,
|
||||
(struct sockaddr *)addr,
|
||||
sizeof(*addr)) < 0) {
|
||||
perror ("bind");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
&loop, sizeof(loop)) < 0) {
|
||||
perror("setsockopt:SO_REUSEADDR");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (bind(sock,
|
||||
(struct sockaddr *) addr,
|
||||
sizeof(*addr)) < 0) {
|
||||
perror("bind");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Broadcast auf dieser Maschine zulassen */
|
||||
loop = 1;
|
||||
if (setsockopt ( sock,
|
||||
/* Broadcast auf dieser Maschine zulassen */
|
||||
loop = 1;
|
||||
if (setsockopt(sock,
|
||||
IPPROTO_IP,
|
||||
IP_MULTICAST_LOOP,
|
||||
&loop, sizeof (loop)) < 0) {
|
||||
perror ("setsockopt:IP_MULTICAST_LOOP");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
&loop, sizeof(loop)) < 0) {
|
||||
perror("setsockopt:IP_MULTICAST_LOOP");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Join the broadcast group: */
|
||||
command.imr_multiaddr.s_addr = inet_addr (_multicast_ip);
|
||||
command.imr_interface.s_addr = htonl (INADDR_ANY);
|
||||
if (command.imr_multiaddr.s_addr == -1) {
|
||||
perror ("224.0.0.1 ist keine Multicast-Adresse\n");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
if (setsockopt ( sock,
|
||||
/* Join the broadcast group: */
|
||||
command.imr_multiaddr.s_addr = inet_addr(_multicast_ip);
|
||||
command.imr_interface.s_addr = htonl (INADDR_ANY);
|
||||
if (command.imr_multiaddr.s_addr == -1) {
|
||||
perror("224.0.0.1 ist keine Multicast-Adresse\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (setsockopt(sock,
|
||||
IPPROTO_IP,
|
||||
IP_ADD_MEMBERSHIP,
|
||||
&command, sizeof (command)) < 0) {
|
||||
perror ("setsockopt:IP_ADD_MEMBERSHIP");
|
||||
}
|
||||
return sock;
|
||||
&command, sizeof(command)) < 0) {
|
||||
perror("setsockopt:IP_ADD_MEMBERSHIP");
|
||||
}
|
||||
return sock;
|
||||
}
|
||||
|
|
@ -26,127 +26,120 @@ const char *ip;
|
|||
unsigned short port;
|
||||
char recv_string[MAX_RECV_STRING + 1];
|
||||
int recv_string_len;
|
||||
|
||||
void *receive_msg(void *args);
|
||||
|
||||
int init_socket_runopts(char *_ip, char *_port, int broadcast_socket) {
|
||||
|
||||
port = atoi(_port);
|
||||
ip = _ip;
|
||||
|
||||
if(broadcast_socket)
|
||||
{
|
||||
sock = setup_broadcast_socket(ip, port, &addr);
|
||||
} else
|
||||
{
|
||||
printf("Settingup multicastsocket!\n");
|
||||
sock = setup_multicast_socket(ip, port, &addr);
|
||||
}
|
||||
port = atoi(_port);
|
||||
ip = _ip;
|
||||
|
||||
pthread_t sniffer_thread;
|
||||
if (pthread_create(&sniffer_thread, NULL, receive_msg, NULL)) {
|
||||
fprintf(stderr, "Could not create receiving thread!");
|
||||
return -1;
|
||||
}
|
||||
if (broadcast_socket) {
|
||||
sock = setup_broadcast_socket(ip, port, &addr);
|
||||
} else {
|
||||
printf("Settingup multicastsocket!\n");
|
||||
sock = setup_multicast_socket(ip, port, &addr);
|
||||
}
|
||||
|
||||
fprintf(stdout, "Connected to %s:%d\n", ip, port);
|
||||
pthread_t sniffer_thread;
|
||||
if (pthread_create(&sniffer_thread, NULL, receive_msg, NULL)) {
|
||||
fprintf(stderr, "Could not create receiving thread!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
fprintf(stdout, "Connected to %s:%d\n", ip, port);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *receive_msg(void *args) {
|
||||
while (1) {
|
||||
if ((recv_string_len =
|
||||
recvfrom(sock, recv_string, MAX_RECV_STRING, 0, NULL, 0)) < 0) {
|
||||
fprintf(stderr, "Could not receive message!");
|
||||
continue;
|
||||
while (1) {
|
||||
if ((recv_string_len =
|
||||
recvfrom(sock, recv_string, MAX_RECV_STRING, 0, NULL, 0)) < 0) {
|
||||
fprintf(stderr, "Could not receive message!");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (recv_string == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strlen(recv_string) <= 0) {
|
||||
return 0;
|
||||
}
|
||||
recv_string[recv_string_len] = '\0';
|
||||
|
||||
printf("[WC] Network-Received: %s\n", recv_string);
|
||||
|
||||
probe_entry prob_req;
|
||||
struct blob_buf b;
|
||||
|
||||
blob_buf_init(&b, 0);
|
||||
blobmsg_add_json_from_string(&b, recv_string);
|
||||
|
||||
char *str;
|
||||
str = blobmsg_format_json(b.head, true);
|
||||
|
||||
|
||||
/*
|
||||
TODO: REFACTOR THIS!!! (just workaround)
|
||||
OTHERWISE NULLPOINTER?!
|
||||
|
||||
*/
|
||||
|
||||
if (str == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strlen(str) <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
HERE IS NULLPOINTER PROBABLY
|
||||
*/
|
||||
|
||||
if (strstr(str, "clients") != NULL) {
|
||||
parse_to_clients(b.head);
|
||||
} else if (strstr(str, "target") != NULL) {
|
||||
if (parse_to_probe_req(b.head, &prob_req) == 0) {
|
||||
insert_to_array(prob_req, 0);
|
||||
}
|
||||
}
|
||||
|
||||
//if(parse_to_probe_req(b.head, &prob_req) == 0)
|
||||
//{
|
||||
// insert_to_array(prob_req, 0);
|
||||
//}
|
||||
|
||||
|
||||
// insert to list
|
||||
//insert_to_list(prob_req, 0);
|
||||
}
|
||||
|
||||
if(recv_string == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(strlen(recv_string) <= 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
recv_string[recv_string_len] = '\0';
|
||||
|
||||
printf("[WC] Network-Received: %s\n", recv_string);
|
||||
|
||||
probe_entry prob_req;
|
||||
struct blob_buf b;
|
||||
|
||||
blob_buf_init(&b, 0);
|
||||
blobmsg_add_json_from_string(&b, recv_string);
|
||||
|
||||
char *str;
|
||||
str = blobmsg_format_json(b.head, true);
|
||||
|
||||
|
||||
/*
|
||||
TODO: REFACTOR THIS!!! (just workaround)
|
||||
OTHERWISE NULLPOINTER?!
|
||||
|
||||
*/
|
||||
|
||||
if(str == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if( strlen(str) <= 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
HERE IS NULLPOINTER PROBABLY
|
||||
*/
|
||||
|
||||
if(strstr(str, "clients") != NULL) {
|
||||
parse_to_clients(b.head);
|
||||
} else if(strstr(str, "target")!= NULL)
|
||||
{
|
||||
if(parse_to_probe_req(b.head, &prob_req) == 0)
|
||||
{
|
||||
insert_to_array(prob_req, 0);
|
||||
}
|
||||
}
|
||||
|
||||
//if(parse_to_probe_req(b.head, &prob_req) == 0)
|
||||
//{
|
||||
// insert_to_array(prob_req, 0);
|
||||
//}
|
||||
|
||||
|
||||
// insert to list
|
||||
//insert_to_list(prob_req, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int send_string(char *msg) {
|
||||
pthread_mutex_lock(&send_mutex);
|
||||
int msglen = strlen(msg);
|
||||
printf("Sending string! %s\n", msg);
|
||||
if (sendto( sock,
|
||||
msg,
|
||||
msglen,
|
||||
0,
|
||||
(struct sockaddr *) &addr,
|
||||
sizeof (addr)) < 0) {
|
||||
perror ("sendto()");
|
||||
exit (EXIT_FAILURE);
|
||||
pthread_mutex_lock(&send_mutex);
|
||||
int msglen = strlen(msg);
|
||||
printf("Sending string! %s\n", msg);
|
||||
if (sendto(sock,
|
||||
msg,
|
||||
msglen,
|
||||
0,
|
||||
(struct sockaddr *) &addr,
|
||||
sizeof(addr)) < 0) {
|
||||
perror("sendto()");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
pthread_mutex_unlock(&send_mutex);
|
||||
pthread_mutex_unlock(&send_mutex);
|
||||
|
||||
|
||||
/*if (sendto(sock, msg, msglen, 0, (struct sockaddr *)&addr,
|
||||
sizeof(addr)) != msglen) {
|
||||
fprintf(stderr, "Failed to send message.\n");
|
||||
return -1;
|
||||
}*/
|
||||
return 0;
|
||||
/*if (sendto(sock, msg, msglen, 0, (struct sockaddr *)&addr,
|
||||
sizeof(addr)) != msglen) {
|
||||
fprintf(stderr, "Failed to send message.\n");
|
||||
return -1;
|
||||
}*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
void close_socket() { close(sock); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue