diff options
Diffstat (limited to 'server.c')
-rw-r--r-- | server.c | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -1,6 +1,7 @@ #include <stdio.h> #include <stdbool.h> #include <stdlib.h> +#include <ctype.h> #include <unistd.h> #include "icmp_server.h" #include "util.h" @@ -14,21 +15,22 @@ int main(void) { } while (true) { - struct icmp_server_incoming msg = icmp_server_receive(sock); + struct icmp_incoming msg = icmp_server_receive(sock); if (msg.data == NULL) { perror("icmp_server_communicate"); return 1; } - printf("Received: type %d id %d seqnum %d data:\n", msg.type, msg.id, msg.seqnum); + printf("Received: id %d seqnum %d data:\n", msg.id, msg.seqnum); xxd(msg.data, msg.length); - if (msg.type != ICMP_ECHO) { - printf("Not an ICMP_ECHO, ignoring\n"); - continue; + char data[msg.length + 1]; + for (size_t i = 0; i < msg.length; i++) { + data[i] = toupper(msg.data[i]); } + data[msg.length] = '!'; - if (icmp_server_send_reply(sock, msg.source_addr, msg.id, msg.seqnum, "dank je wel", 11) < 0) { + if (icmp_server_send_reply(sock, msg.source_addr, msg.id, msg.seqnum, data, msg.length + 1) < 0) { perror("icmp_server_send_reply"); } } |