2 * Copyright 2010, Atis Elsts, the.kfx@gmail.com
3 * Distributed under the terms of the MIT license.
9 #include <netinet/in.h>
10 #include <arpa/inet.h>
16 const unsigned short TEST_PROTOCOL
= 89;
20 main(int argc
, char *argv
[])
22 int socketFamily
= AF_INET
;
25 if (!strcmp(argv
[1], "-4"))
26 socketFamily
= AF_INET
;
27 else if (!strcmp(argv
[1], "-6"))
28 socketFamily
= AF_INET6
;
31 int fd
= socket(socketFamily
, SOCK_RAW
, TEST_PROTOCOL
);
37 sockaddr_storage saddr
;
38 memset(&saddr
, 0, sizeof(saddr
));
39 if (socketFamily
== AF_INET
) {
40 sockaddr_in
*sa
= (sockaddr_in
*) &saddr
;
41 sa
->sin_family
= AF_INET
;
42 sa
->sin_addr
.s_addr
= htonl(INADDR_LOOPBACK
);
44 sockaddr_in6
*sa
= (sockaddr_in6
*) &saddr
;
45 sa
->sin6_family
= AF_INET6
;
46 sa
->sin6_addr
.s6_addr
[15] = 0x01; // loopback
49 const char *buffer
= "hello world";
50 unsigned length
= strlen(buffer
);
51 int status
= sendto(fd
, buffer
, length
, 0, (sockaddr
*) &saddr
,
52 socketFamily
== AF_INET
? sizeof(sockaddr_in
) : sizeof(sockaddr_in6
));
53 if (status
< length
) {
57 printf("no data sent!\n");
59 printf("not all data sent!\n");
61 printf("send(): success\n");