Changeset 508:1129ff87dd1e in roaraudio for libroar/socket.c
- Timestamp:
- 08/15/08 00:40:31 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/socket.c
r503 r508 42 42 return fh; 43 43 } 44 45 int roar_socket_new_decnet_seqpacket (void) { 46 #ifdef ROAR_HAVE_LIBDNET 47 int fh; 48 49 fh = socket(AF_DECnet, SOCK_SEQPACKET, DNPROTO_NSP); 50 51 return fh; 52 #else 53 return -1; 54 #endif 55 } 56 57 58 int roar_socket_new_decnet_stream (void) { 59 #ifdef ROAR_HAVE_LIBDNET 60 int fh; 61 62 fh = socket(AF_DECnet, SOCK_STREAM, DNPROTO_NSP); 63 64 return fh; 65 #else 66 return -1; 67 #endif 68 } 69 44 70 45 71 int roar_socket_nonblock(int fh, int state) { … … 119 145 return roar_socket_open_proxy(MODE_CONNECT, ROAR_SOCKET_TYPE_UNKNOWN, host, port, proxy_type); 120 146 } 147 } 148 149 150 int roar_socket_listen_decnet (char * object, int num) { 151 #ifdef ROAR_HAVE_LIBDNET 152 int fh = roar_socket_new_decnet_stream(); 153 struct sockaddr_dn bind_sockaddr; 154 155 if ( fh == -1 ) 156 return -1; 157 158 if ( !*object ) 159 object = NULL; 160 161 if ( (object && num) || (!*object && !num) ) { 162 ROAR_WARN("roar_socket_listen_decnet(object='%s', num=%i): illegal address!", object, num); 163 close(fh); 164 return -1; 165 } 166 167 memset((void*)&bind_sockaddr, 0, sizeof(struct sockaddr_dn)); 168 169 bind_sockaddr.sdn_family = AF_DECnet; 170 bind_sockaddr.sdn_flags = 0; 171 bind_sockaddr.sdn_objnum = num; 172 173 if ( num ) { 174 bind_sockaddr.sdn_objnamel = 0; 175 } else { 176 bind_sockaddr.sdn_objnamel = ROAR_dn_htons(strlen(object)); 177 strcpy((char*)bind_sockaddr.sdn_objname, object); // FIXME: shouldn't we use strncpy()? 178 } 179 180 if ( bind(fh, (struct sockaddr *) &bind_sockaddr, sizeof(bind_sockaddr)) == -1 ) { 181 close(fh); 182 return -1; 183 } 184 185 if ( listen(fh, 8) == -1 ) { 186 close(fh); 187 return -1; 188 } 189 190 return fh; 191 #else 192 return -1; 193 #endif 121 194 } 122 195 … … 153 226 154 227 if ( type == ROAR_SOCKET_TYPE_DECNET ) { 155 if ( mode == MODE_LISTEN ) {156 return -1; // listen sockets on DECnet are not supportet at the moment157 } else {158 228 #ifdef ROAR_HAVE_LIBDNET 159 // There is nothing wrong in this case to use dnet_conn() so we do.229 ROAR_DBG("roar_socket_open(*): hostname for DECnet: host(%p)=%s", host, host); 160 230 del = strstr(host, "::"); 231 ROAR_DBG("roar_socket_open(*): hostname for DECnet: del(%p)=%s", del, del); 232 233 if ( del == NULL ) { 234 ROAR_WARN("roar_socket_open(*): invalid hostname for DECnet: %s", host); 235 return -1; 236 } 237 161 238 *del = 0; 162 239 … … 172 249 } 173 250 251 if ( mode == MODE_LISTEN ) { 252 fh = roar_socket_listen_decnet(obj, port); 253 *del = ':'; 254 return fh; 255 // return -1; // listen sockets on DECnet are not supportet at the moment 256 } else { 257 // There is nothing wrong in this case to use dnet_conn() so we do. 174 258 fh = dnet_conn(host, obj, SOCK_STREAM, 0 ,0 ,0 , 0); 175 259 *del = ':';
Note: See TracChangeset
for help on using the changeset viewer.