wip
This commit is contained in:
parent
af79779970
commit
b767b810c3
@ -22,8 +22,16 @@
|
||||
#include "ping_pong.h"
|
||||
#include "gpio.h"
|
||||
|
||||
#define DEST_PORT 1234
|
||||
#define DEST_ADDR "fd00::1"
|
||||
struct addr_port {
|
||||
const char * addr;
|
||||
const int port;
|
||||
};
|
||||
|
||||
const struct addr_port dests[] = {
|
||||
{"fd00::1", 1234},
|
||||
{"fd00::10", 1234},
|
||||
};
|
||||
const int dests_len = (sizeof (dests)) / (sizeof (dests[0]));
|
||||
|
||||
#define PORT 4321
|
||||
|
||||
@ -65,8 +73,8 @@ int handle_buf(int sockfd,
|
||||
}
|
||||
|
||||
int handle_sockfd(int sockfd,
|
||||
struct sockaddr_in6 * dest_addr,
|
||||
struct link_state * link_state)
|
||||
struct dest_addr dest_addr[],
|
||||
struct link_state link_state[])
|
||||
{
|
||||
struct sockaddr_in6 src_addr;
|
||||
socklen_t addrlen = (sizeof (struct sockaddr_in6));
|
||||
@ -88,10 +96,16 @@ int handle_sockfd(int sockfd,
|
||||
}
|
||||
}
|
||||
|
||||
//char src_addr_str[INET6_ADDRSTRLEN];
|
||||
//inet_ntop(AF_INET6, &src_addr.sin6_addr, src_addr_str, INET6_ADDRSTRLEN);
|
||||
//printf("received packet from %s:%d\n", src_addr_str, ntohs(src_addr.sin6_port));
|
||||
//printf("length: %ld\n", recv_len);
|
||||
char src_addr_str[INET6_ADDRSTRLEN];
|
||||
inet_ntop(AF_INET6, &src_addr.sin6_addr, src_addr_str, INET6_ADDRSTRLEN);
|
||||
printf("received packet from %s:%d\n", src_addr_str, ntohs(src_addr.sin6_port));
|
||||
printf("length: %ld\n", recv_len);
|
||||
|
||||
for (int i = 0; i < dests_len; i++) {
|
||||
if (memcmp(src_addr.sin6_addr.s6_addr, dest_addr[i].sin6_addr.s6_addr, (sizeof (struct in6_addr))) == 0) {
|
||||
printf("MATCH %d\n", i);
|
||||
}
|
||||
}
|
||||
|
||||
int ret = handle_buf(sockfd, dest_addr, buf, recv_len, link_state);
|
||||
if (ret == -1) {
|
||||
@ -387,15 +401,17 @@ int main(void)
|
||||
}
|
||||
}
|
||||
|
||||
struct sockaddr_in6 dest_addr;
|
||||
dest_addr.sin6_family = AF_INET6;
|
||||
dest_addr.sin6_port = htons(DEST_PORT);
|
||||
ret = inet_pton(AF_INET6, DEST_ADDR, &dest_addr.sin6_addr);
|
||||
assert(ret == 1);
|
||||
struct sockaddr_in6 dest_addr[dests_len];
|
||||
for (int i = 0; i < dests_len; i++) {
|
||||
dest_addr[i].sin6_family = AF_INET6;
|
||||
dest_addr[i].sin6_port = htons(dests[i].port);
|
||||
ret = inet_pton(AF_INET6, dests[i].addr, &dest_addr[i].sin6_addr);
|
||||
assert(ret == 1);
|
||||
}
|
||||
|
||||
struct parser_state parser_state = {0};
|
||||
struct timer_state timer_state = {0};
|
||||
struct link_state link_state = {0};
|
||||
struct link_state link_state[dests_len] = {0};
|
||||
struct gpio_state gpio_state = {0};
|
||||
|
||||
gpio_open("/dev/gpiochip0", &gpio_state);
|
||||
@ -410,13 +426,13 @@ int main(void)
|
||||
|
||||
for (int n = 0; n < nfds; ++n) {
|
||||
if (events[n].data.fd == sockfd) {
|
||||
ret = handle_sockfd(sockfd, &dest_addr, &link_state);
|
||||
ret = handle_sockfd(sockfd, link_state);
|
||||
if (ret == -1)
|
||||
return -1;
|
||||
} else if (events[n].data.fd == timerfd) {
|
||||
ret = handle_timerfd(timerfd,
|
||||
sockfd,
|
||||
&dest_addr,
|
||||
dest_addr,
|
||||
&timer_state,
|
||||
&link_state,
|
||||
&gpio_state);
|
||||
@ -426,7 +442,7 @@ int main(void)
|
||||
fprintf(stderr, "handle_serialfd\n");
|
||||
ret = handle_serialfd(serialfd,
|
||||
sockfd,
|
||||
&dest_addr,
|
||||
dest_addr,
|
||||
&parser_state,
|
||||
&timer_state,
|
||||
&link_state,
|
||||
|
Loading…
x
Reference in New Issue
Block a user