This is an automated email from Gerrit.

Paul Fertser ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/1938

-- gerrit

commit bd50bc9f95aac7ea8ac59896f3d8f7124a375a41
Author: Paul Fertser <[email protected]>
Date:   Thu Feb 6 14:04:00 2014 +0400

    server: use IPv6 sockets
    
    This makes OpenOCD compatible with the current version of Internet
    standards by making it listen on IPv6 by default for all TCP
    services.
    
    Compatibility with IPv4 is preserved on the systems that support
    IPv4-mapped IPv6 addresses.
    
    Change-Id: Ib4e8568c881a3f3d224ce205b7b25379a51406e8
    Signed-off-by: Paul Fertser <[email protected]>

diff --git a/src/server/server.c b/src/server/server.c
index 5169319..a91bb00 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -215,7 +215,7 @@ int add_service(char *name,
        if (c->type == CONNECTION_TCP) {
                c->max_connections = max_connections;
 
-               c->fd = socket(AF_INET, SOCK_STREAM, 0);
+               c->fd = socket(AF_INET6, SOCK_STREAM, 0);
                if (c->fd == -1) {
                        LOG_ERROR("error creating socket: %s", strerror(errno));
                        exit(-1);
@@ -229,12 +229,10 @@ int add_service(char *name,
 
                socket_nonblock(c->fd);
 
-               memset(&c->sin, 0, sizeof(c->sin));
-               c->sin.sin_family = AF_INET;
-               c->sin.sin_addr.s_addr = INADDR_ANY;
-               c->sin.sin_port = htons(c->portnumber);
+               struct sockaddr_in6 sin = { AF_INET6, htons(c->portnumber), 0,
+                                       IN6ADDR_ANY_INIT, 0 };
 
-               if (bind(c->fd, (struct sockaddr *)&c->sin, sizeof(c->sin)) == 
-1) {
+               if (bind(c->fd, (struct sockaddr *)&sin, sizeof(sin)) == -1) {
                        LOG_ERROR("couldn't bind to socket: %s", 
strerror(errno));
                        exit(-1);
                }
diff --git a/src/server/server.h b/src/server/server.h
index b444939..fd3ea72 100644
--- a/src/server/server.h
+++ b/src/server/server.h
@@ -60,7 +60,7 @@ struct service {
        char *port;
        unsigned short portnumber;
        int fd;
-       struct sockaddr_in sin;
+       struct sockaddr_storage sin;
        int max_connections;
        struct connection *connections;
        new_connection_handler_t new_connection;

-- 

------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to