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 * Modex address structure.
37 *
38 * One of these structures will be sent for every btl module in use by
39 * the local BTL TCP component.
40 */
41 struct mca_btl_tcp_modex_addr_t {
42 uint8_t addr[16]; /* endpoint address. for addr_family
43 of MCA_BTL_TCP_AF_INET, only the
44 first 4 bytes have meaning. */
45 uint32_t addr_ifkindex; /* endpoint kernel index */
46 uint16_t addr_port; /* endpoint listen port */
47 uint8_t addr_family; /* endpoint address family. Note that
48 this is
49 MCA_BTL_TCP_AF_{INET,INET6}, not
50 the traditional
51 AF_INET/AF_INET6. */
52 uint8_t padding[1]; /* padd out to an 8-byte word */
53 };
54 typedef struct mca_btl_tcp_modex_addr_t mca_btl_tcp_modex_addr_t;
55
56
57 /**
58 * Remote peer address structure
59 *
60 * One of these structures will be allocated for every remote endpoint
61 * associated with a remote proc. The data is pulled from the
62 * mca_btl_tcp_modex_addr_t structure, except for the addr_inuse
63 * field, which is local.
64 */
65 struct mca_btl_tcp_addr_t {
66 union {
67 struct in_addr addr_inet; /* IPv6 listen address */
68 #if OPAL_ENABLE_IPV6
69 struct in6_addr addr_inet6; /* IPv6 listen address */
70 #endif
71 };
72 in_port_t addr_port; /**< listen port */
73 int addr_ifkindex; /**< remote interface index assigned with
74 this address */
75 uint8_t addr_family; /**< AF_INET or AF_INET6 */
76 bool addr_inuse; /**< local meaning only */
77 };
78 typedef struct mca_btl_tcp_addr_t mca_btl_tcp_addr_t;
79
80 #define MCA_BTL_TCP_AF_INET 0
81 #define MCA_BTL_TCP_AF_INET6 1
82
83 #endif
84