diff options
author | Ian Moffett <ian@osmora.org> | 2025-09-25 14:23:36 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-09-25 14:23:36 -0400 |
commit | afcdcf6ae6d95eb828733994c7de30f8ab095dcc (patch) | |
tree | e45ee28dc7bff6da7ab0d5f6a3e2b27c6ac36aa8 /src/main.c | |
parent | 25872d593fc4f9d2845ef6f676ce4ec3d55e9aac (diff) |
dgram: Add support for data reception
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 38 |
1 files changed, 35 insertions, 3 deletions
@@ -35,6 +35,7 @@ #include <net/ethernet.h> #include <stdio.h> #include <stdlib.h> +#include <stdbool.h> #include <unistd.h> #include <string.h> #include "if_ether.h" @@ -44,6 +45,7 @@ #define TEST_STR "Hello from o.1p!! Meow meow!" static const char *iface = NULL; +static bool do_recv = false; static void help(char **argv) @@ -78,10 +80,36 @@ data_send(void) return 0; } +static int +data_recv(void) +{ + char buf[sizeof(TEST_STR) + 8]; + struct onet_link link; + int error; + + /* Open a link */ + error = onet_open(iface, &link); + if (error < 0) { + return error; + } + + memset(buf, 0, sizeof(buf)); + + /* Recv data */ + dgram_recv( + &link, buf, + sizeof(TEST_STR) + ); + + printf("%s\n", buf); + onet_close(&link); + return 0; +} + int main(int argc, char **argv) { - int opt; + int opt, error; if (argc < 2) { printf("error: too few arguments!\n"); @@ -89,7 +117,7 @@ main(int argc, char **argv) return -1; } - while ((opt = getopt(argc, argv, "i:h")) != -1) { + while ((opt = getopt(argc, argv, "i:hr")) != -1) { switch (opt) { case 'h': help(argv); @@ -97,6 +125,9 @@ main(int argc, char **argv) case 'i': iface = optarg; break; + case 'r': + do_recv = true; + break; } } @@ -106,5 +137,6 @@ main(int argc, char **argv) return -1; } - return data_send(); + error = do_recv ? data_recv() : data_send(); + return error; } |