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