Changeset 5248:0133acb5ae31 in roaraudio for libroar/socket.c
- Timestamp:
- 11/13/11 12:59:34 (12 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/socket.c
r5210 r5248 54 54 #endif 55 55 56 int roar_socket_new_tcp (void) {57 #ifdef ROAR_HAVE_IPV458 int fh;59 #if defined(TCP_NODELAY) && !defined(ROAR_TARGET_WIN32)60 int t = 1;61 #endif62 63 roar_socket_win32_init();64 65 fh = socket(AF_INET, SOCK_STREAM, 0);66 67 roar_socket_set_tos(fh);68 #if defined(TCP_NODELAY) && !defined(ROAR_TARGET_WIN32)69 setsockopt(fh, IPPROTO_TCP, TCP_NODELAY, &t, sizeof(int));70 #endif71 72 return fh;73 #else74 return -1;75 #endif76 }77 78 int roar_socket_new_udp (void) {79 #ifdef ROAR_HAVE_IPV480 int fh;81 82 roar_socket_win32_init();83 84 fh = socket(AF_INET, SOCK_DGRAM, 0);85 86 roar_socket_set_tos(fh);87 88 return fh;89 #else90 return -1;91 #endif92 }93 94 int roar_socket_new_tcp6 (void) {95 #ifdef ROAR_HAVE_IPV696 int fh;97 98 roar_socket_win32_init();99 100 fh = socket(AF_INET6, SOCK_STREAM, 0);101 102 roar_socket_set_tos(fh);103 104 return fh;105 #else106 return -1;107 #endif108 }109 110 int roar_socket_new_udp6 (void) {111 #ifdef ROAR_HAVE_IPV6112 int fh;113 114 roar_socket_win32_init();115 116 fh = socket(AF_INET6, SOCK_DGRAM, 0);117 118 roar_socket_set_tos(fh);119 120 return fh;121 #else122 return -1;123 #endif124 }125 126 int roar_socket_new_unix (void) {127 #ifdef ROAR_HAVE_UNIX128 int fh;129 /*130 #ifdef SO_PEERCRED131 int opt = 1;132 #endif133 */134 135 fh = socket(AF_UNIX, SOCK_STREAM, 0);136 137 /*138 #ifdef SO_PEERCRED139 // setsockopt(fh, SOL_SOCKET, SO_PASSCRED, &opt, sizeof(int));140 #endif141 */142 143 return fh;144 #else145 return -1;146 #endif147 }148 149 56 int roar_socket_decnet_set_timeout (int fh, time_t sec, int usec) { 150 57 #ifdef ROAR_HAVE_LIBDNET … … 183 90 } 184 91 185 int roar_socket_new_decnet_seqpacket (void) { 92 #if 0 93 static int roar_socket_new_decnet_seqpacket (void) { 186 94 #ifdef ROAR_HAVE_LIBDNET 187 95 int fh; … … 196 104 #endif 197 105 } 198 199 200 int roar_socket_new_decnet_stream (void) { 106 #endif 107 108 109 #if 0 110 static int roar_socket_new_ipxspx (void) { 111 return -1; 112 } 113 #endif 114 115 int roar_socket_new (int type) { 116 int sys_domain = -1, sys_type = -1, sys_protocol = 0; 117 int fh; 118 #if defined(ROAR_HAVE_IPV4) && defined(TCP_NODELAY) && !defined(ROAR_TARGET_WIN32) 119 int t = 1; 120 #endif 121 122 switch (type) { 123 case ROAR_SOCKET_TYPE_NONE: 124 case ROAR_SOCKET_TYPE_GENSTR: 125 roar_err_set(ROAR_ERROR_INVAL); 126 return -1; 127 break; 128 case ROAR_SOCKET_TYPE_FILE: 129 case ROAR_SOCKET_TYPE_FORK: 130 roar_err_set(ROAR_ERROR_PERM); 131 return -1; 132 break; 133 #ifdef ROAR_HAVE_IPV4 134 case ROAR_SOCKET_TYPE_TCP: 135 sys_domain = AF_INET; sys_type = SOCK_STREAM; 136 break; 137 case ROAR_SOCKET_TYPE_UDP: 138 sys_domain = AF_INET; sys_type = SOCK_DGRAM; 139 break; 140 #endif 141 #ifdef ROAR_HAVE_UNIX 142 case ROAR_SOCKET_TYPE_UNIX: 143 sys_domain = AF_UNIX; sys_type = SOCK_STREAM; 144 break; 145 #endif 201 146 #ifdef ROAR_HAVE_LIBDNET 202 int fh; 203 204 fh = socket(AF_DECnet, SOCK_STREAM, DNPROTO_NSP); 205 206 roar_socket_decnet_set_timeout(fh, 300, 0); 147 case ROAR_SOCKET_TYPE_DECNET: 148 sys_domain = AF_DECnet; sys_type = SOCK_STREAM; sys_protocol = DNPROTO_NSP; 149 break; 150 #endif 151 #ifdef ROAR_HAVE_IPV6 152 case ROAR_SOCKET_TYPE_TCP6: 153 sys_domain = AF_INET6; sys_type = SOCK_STREAM; 154 break; 155 case ROAR_SOCKET_TYPE_UDP6: 156 sys_domain = AF_INET6; sys_type = SOCK_DGRAM; 157 break; 158 #endif 159 #ifdef ROAR_HAVE_IPX 160 case ROAR_SOCKET_TYPE_IPX: 161 sys_domain = AF_IPX; sys_type = SOCK_DGRAM; sys_protocol = AF_IPX; 162 break; 163 #endif 164 case ROAR_SOCKET_TYPE_IPXSPX: 165 case ROAR_SOCKET_TYPE_LAT_SERVICE: 166 case ROAR_SOCKET_TYPE_LAT_REVERSE_PORT: 167 default: 168 roar_err_set(ROAR_ERROR_AFNOTSUP); 169 return -1; 170 break; 171 } 172 173 roar_socket_win32_init(); 174 175 roar_err_clear_all(); 176 fh = socket(sys_domain, sys_type, sys_protocol); 177 if ( fh == -1 ) { 178 roar_err_update(); 179 return -1; 180 } 181 182 // do the extra work we need to do for some socket types: 183 switch (type) { 184 #ifdef ROAR_HAVE_IPV4 185 case ROAR_SOCKET_TYPE_TCP: 186 #if defined(TCP_NODELAY) && !defined(ROAR_TARGET_WIN32) 187 setsockopt(fh, IPPROTO_TCP, TCP_NODELAY, &t, sizeof(int)); 188 #endif 189 case ROAR_SOCKET_TYPE_UDP: 190 #endif 191 #ifdef ROAR_HAVE_IPV6 192 case ROAR_SOCKET_TYPE_TCP6: 193 case ROAR_SOCKET_TYPE_UDP6: 194 #endif 195 #if defined(ROAR_HAVE_IPV4) || defined(ROAR_HAVE_IPV6) 196 roar_socket_set_tos(fh); 197 break; 198 #endif 199 #ifdef ROAR_HAVE_LIBDNET 200 case ROAR_SOCKET_TYPE_DECNET: 201 roar_socket_decnet_set_timeout(fh, 300, 0); 202 break; 203 #endif 204 } 207 205 208 206 return fh; 209 #else210 return -1;211 #endif212 }213 214 int roar_socket_new_ipxspx (void) {215 return -1;216 }217 218 int roar_socket_new_ipx (void) {219 #ifdef ROAR_HAVE_IPX220 return socket(AF_IPX, SOCK_DGRAM, AF_IPX);221 #else222 return -1;223 #endif224 207 } 225 208 … … 280 263 } 281 264 282 n = roar_socket_new _udp();265 n = roar_socket_new(ROAR_SOCKET_TYPE_UDP); 283 266 284 267 if ( n == -1 ) … … 424 407 int roar_socket_listen_decnet (char * object, int num) { 425 408 #ifdef ROAR_HAVE_LIBDNET 426 int fh = roar_socket_new _decnet_stream();409 int fh = roar_socket_new(ROAR_SOCKET_TYPE_DECNET); 427 410 struct sockaddr_dn bind_sockaddr; 428 411 … … 695 678 696 679 if ( type == ROAR_SOCKET_TYPE_INET ) { 697 fh = roar_socket_new _tcp();680 fh = roar_socket_new(ROAR_SOCKET_TYPE_TCP); 698 681 } else { 699 fh = roar_socket_new _tcp6();682 fh = roar_socket_new(ROAR_SOCKET_TYPE_TCP6); 700 683 } 701 684 … … 721 704 socket_addr.in.sin_port = ROAR_HOST2NET16(port); 722 705 723 fh = roar_socket_new _tcp();706 fh = roar_socket_new(ROAR_SOCKET_TYPE_TCP); 724 707 addrlen = sizeof(struct sockaddr_in); 725 708 #endif … … 763 746 } 764 747 765 fh = roar_socket_new _unix();748 fh = roar_socket_new(ROAR_SOCKET_TYPE_UNIX); 766 749 767 750 if ( mode_func(fh, (struct sockaddr *)&socket_addr.un, sizeof(struct sockaddr_un)) == -1 ) { … … 795 778 return -1; 796 779 797 fh = roar_socket_new _ipx();780 fh = roar_socket_new(ROAR_SOCKET_TYPE_IPX); 798 781 799 782 close(fh); 800 roar_err_set(ROAR_ERROR_ NOSYS);783 roar_err_set(ROAR_ERROR_AFNOTSUP); 801 784 return -1; 802 785 #else
Note: See TracChangeset
for help on using the changeset viewer.