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