1 /*
2  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
3  *                         University Research and Technology
4  *                         Corporation.  All rights reserved.
5  * Copyright (c) 2004-2007 The University of Tennessee and The University
6  *                         of Tennessee Research Foundation.  All rights
7  *                         reserved.
8  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
9  *                         University of Stuttgart.  All rights reserved.
10  * Copyright (c) 2004-2005 The Regents of the University of California.
11  *                         All rights reserved.
12  * $COPYRIGHT$
13  *
14  * Additional copyrights may follow
15  *
16  * $HEADER$
17  */
18 /**
19  * @file
20  */
21 #ifndef MCA_BTL_TCP_ADDR_H
22 #define MCA_BTL_TCP_ADDR_H
23 
24 #ifdef HAVE_SYS_TYPES_H
25 #include <sys/types.h>
26 #endif
27 #ifdef HAVE_SYS_SOCKET_H
28 #include <sys/socket.h>
29 #endif
30 #ifdef HAVE_NETINET_IN_H
31 #include <netinet/in.h>
32 #endif
33 
34 
35 /**
36  * Structure used to publish TCP connection information to peers.
37  */
38 
39 struct mca_btl_tcp_addr_t {
40     /* the following information is exchanged between different
41        machines (read: byte order), so use network byte order
42        for everything and don't add padding
43     */
44 #if OPAL_ENABLE_IPV6
45     struct in6_addr addr_inet;    /**< IPv4/IPv6 listen address > */
46 #else
47     /* Bug, FIXME: needs testing */
48     struct my_in6_addr {
49         union {
50             uint32_t u6_addr32[4];
51             struct _my_in6_addr {
52                 struct in_addr _addr_inet;
53                 uint32_t _pad[3];
54             } _addr__inet;
55         } _union_inet;
56     } addr_inet;
57 #endif
58     in_port_t      addr_port;     /**< listen port */
59     uint16_t       addr_ifkindex; /**< remote interface index assigned with
60                                     this address */
61     unsigned short addr_inuse;    /**< local meaning only */
62     uint8_t        addr_family;   /**< AF_INET or AF_INET6 */
63 };
64 typedef struct mca_btl_tcp_addr_t mca_btl_tcp_addr_t;
65 
66 #define MCA_BTL_TCP_AF_INET     0
67 #if OPAL_ENABLE_IPV6
68 # define MCA_BTL_TCP_AF_INET6   1
69 #endif
70 
71 #endif
72 
73