1 #include "../src/kernel/mptp.h"
3 #include <sys/socket.h>
7 #include <netinet/in.h>
10 #define ADDR 0x8182A8C0
13 int main(int argc, const char *argv[])
19 fprintf(stderr, "USAGE: %s listening_port\n", argv[0]);
23 sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_MPTP);
25 perror("Failed to create socket");
29 int size = sizeof(struct sockaddr_mptp) + sizeof(struct mptp_dest);
30 struct sockaddr_mptp *saddr = malloc(size);
31 memset(saddr, 0, size);
34 saddr->dests[0].addr = ADDR;
35 saddr->dests[0].port = htons(atoi(argv[1]));
37 if (bind(sock, (struct sockaddr *) saddr, size) < 0) {
38 perror("Failed to bind socket");
43 char buf[NUM_BUF][10240];
44 struct iovec iov[NUM_BUF];
46 size += (NUM_BUF - 1) * sizeof(struct mptp_dest);
47 struct sockaddr_mptp *from = malloc(size);
49 memset(&msg, 0, sizeof(msg));
50 memset(&iov, 0, sizeof(iov));
51 memset(from, 0, size);
53 for (i = 0; i < NUM_BUF; i++) {
54 iov[i].iov_base = buf[i];
55 iov[i].iov_len = sizeof(buf[i]);
61 msg.msg_namelen = size;
67 ret = recvmsg(sock, &msg, 0);
69 perror("Failed to recv on socket");
73 printf("Received %d bytes on socket\n", ret);
74 for (i = 0; i < from->count; i++) {
75 printf("buf=%s from %s:%d\n", buf[i], inet_ntoa(from->dests[i].addr), from->dests[i].port);
78 if (close(sock) < 0) {
79 perror("Failed to close socket");