]> git.ozlabs.org Git - ccan/blobdiff - ccan/net/_info
net: new module to help IPv4/IPv6 transition.
[ccan] / ccan / net / _info
diff --git a/ccan/net/_info b/ccan/net/_info
new file mode 100644 (file)
index 0000000..0b38c44
--- /dev/null
@@ -0,0 +1,67 @@
+#include <string.h>
+#include "config.h"
+
+/**
+ * net - simple IPv4/IPv6 client library
+ *
+ * This code makes it simple to support IPv4 and IPv6 without speed penalty.
+ *
+ * License: MIT
+ *
+ * Author: Rusty Russell <rusty@rustcorp.com.au>
+ *
+ * Example:
+ *     #include <ccan/net/net.h>
+ *     #include <sys/types.h>
+ *     #include <sys/socket.h>
+ *     #include <stdio.h>
+ *     #include <err.h>
+ *
+ *     int main(int argc, char *argv[])
+ *     {
+ *             struct addrinfo *addr;
+ *             const char *dest, *port;
+ *             int fd;
+ *             struct sockaddr saddr;
+ *             socklen_t slen = sizeof(saddr);
+ *     
+ *             if (argc == 2) {
+ *                     dest = argv[1];
+ *                     port = "http";
+ *             } else if (argc == 3) {
+ *                     dest = argv[1];
+ *                     port = argv[2];
+ *             } else
+ *                     errx(1, "Usage: test-net <target> [<port>]");
+ *     
+ *             addr = net_client_lookup(dest, port, AF_UNSPEC, SOCK_STREAM);
+ *             if (!addr)
+ *                     err(1, "Failed to look up %s", dest);
+ *     
+ *             fd = net_connect(addr);
+ *             if (fd < 0)
+ *                     err(1, "Failed to connect to %s", dest);
+ *     
+ *             if (getsockname(fd, &saddr, &slen) == 0)
+ *                     printf("Connected via %s\n",
+ *                            saddr.sa_family == AF_INET6 ? "IPv6"
+ *                            : saddr.sa_family == AF_INET ? "IPv4"
+ *                            : "UNKNOWN??");
+ *             else
+ *                     err(1, "Failed to get socket type for connection");
+ *             return 0;
+ *     }
+ */
+int main(int argc, char *argv[])
+{
+       /* Expect exactly one argument */
+       if (argc != 2)
+               return 1;
+
+       if (strcmp(argv[1], "depends") == 0) {
+               printf("ccan/noerr\n");
+               return 0;
+       }
+
+       return 1;
+}