summaryrefslogtreecommitdiff
path: root/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'server.c')
-rw-r--r--server.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/server.c b/server.c
index 9b16173..df51032 100644
--- a/server.c
+++ b/server.c
@@ -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");
}
}