This commit is contained in:
Zack Buhman 2024-09-24 21:45:28 -05:00
parent af79779970
commit b767b810c3

View File

@ -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,