#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
+#include <time.h>
+
+#define ADDR 0x8082A8C0
+#define DADDR 0x8082A8C0
+
+int gen_port()
+{
+ int ret;
+ srand(time(NULL));
+ ret = (rand() % 255) + 1;
+ if (ret == 100 || ret == 101)
+ ret *= 2;
+ printf("Generated source port %d\n", ret);
+ return ret;
+}
int main(int argc, const char *argv[])
{
memset(saddr, 0, size);
saddr->count = 1;
- saddr->dests[0].addr = 0x0100007F;
- saddr->dests[0].port = 50;
+ saddr->dests[0].addr = ADDR;
+ saddr->dests[0].port = gen_port();
if (bind(sock, (struct sockaddr *) saddr, size) < 0) {
perror("Failed to bind socket");
return -1;
}
- char buf[] = "Buffer de test";
- struct iovec iov[1];
+ char buf[] = "Buffer1";
+ char buf2[] = "Buffer2";
+ struct iovec iov[2];
struct msghdr msg;
- struct sockaddr_swift *to = malloc(size);
+ int size2 = sizeof(struct sockaddr_swift) + 2 * sizeof(struct swift_dest);
+ struct sockaddr_swift *to = malloc(size2);
memset(&msg, 0, sizeof(msg));
memset(&iov, 0, sizeof(iov));
- memset(to, 0, size);
+ memset(to, 0, size2);
iov[0].iov_base = buf;
iov[0].iov_len = sizeof(buf);
+ iov[1].iov_base = buf2;
+ iov[1].iov_len = sizeof(buf2);
- to->count = 1;
- to->dests[0].addr = 0x0100007F;
+ to->count = 2;
+ to->dests[0].addr = DADDR;
to->dests[0].port = 100;
+ to->dests[1].addr = DADDR;
+ to->dests[1].port = 101;
msg.msg_iov = iov;
- msg.msg_iovlen = 1;
+ msg.msg_iovlen = 2;
msg.msg_name = to;
- msg.msg_namelen = size;
+ msg.msg_namelen = size2;
int ret;