Changeset 1354:fb6e3f4bbcf6 in roaraudio
- Timestamp:
- 03/23/09 22:42:19 (15 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/vio_socket.h
r1335 r1354 51 51 52 52 int roar_vio_socket_init_unix_def (struct roar_vio_defaults * def, char * path); 53 54 int roar_vio_socket_init_decnetnode_def(struct roar_vio_defaults * def); 53 55 int roar_vio_socket_init_decnet_def (struct roar_vio_defaults * def, char * node, int object, char * objname); 54 56 -
libroar/vio_socket.c
r1353 r1354 83 83 len = sizeof(struct sockaddr_dn); 84 84 85 return -1; 85 if ( roar_vio_socket_init_decnetnode_def(def) == -1 ) 86 return -1; 87 88 switch (def->d.socket.type) { 89 case SOCK_STREAM: 90 fh = roar_socket_new_decnet_stream(); 91 break; 92 default: 93 return -1; 94 } 86 95 break; 87 96 #endif … … 223 232 #endif 224 233 234 ROAR_DBG("roar_vio_socket_init_dstr_def(*) = ?"); 235 225 236 if ( *dstr == 0 ) { 226 237 if ( roar_vio_socket_conv_def(odef, hint) == -1 ) … … 237 248 238 249 for (; *dstr == '/'; dstr++); 250 251 ROAR_DBG("roar_vio_socket_init_dstr_def(*) = ?"); 239 252 240 253 switch (hint) { … … 258 271 #ifdef ROAR_HAVE_LIBDNET 259 272 case AF_DECnet: 260 return -1; 273 ROAR_DBG("roar_vio_socket_init_dstr_def(*) = ?"); 274 host = dstr; 275 276 if ( type != SOCK_STREAM ) 277 return -1; 278 279 if ( (dstr = strstr(dstr, "::")) == NULL ) { 280 if ( roar_vio_socket_conv_def(odef, AF_DECnet) == -1 ) 281 return -1; 282 283 return -1; 284 // return roar_vio_socket_init_decnet_def(def, host, -1, dstr); 285 } else { 286 *dstr = 0; 287 dstr += 2; 288 return roar_vio_socket_init_decnet_def(def, host, -1, dstr); 289 } 261 290 break; 262 291 #endif … … 391 420 392 421 // AF_DECnet: 422 int roar_vio_socket_init_decnetnode_def(struct roar_vio_defaults * def) { 423 char * node; 424 char * ed; 425 struct nodeent * ne; 426 427 if ( def == NULL ) 428 return -1; 429 430 if ( (node = def->d.socket.host) == NULL ) 431 return -1; 432 433 if ( (ed = strstr(node, "/")) != NULL ) 434 *ed = 0; 435 436 if ( (ne = getnodebyname(node)) == NULL ) { 437 ROAR_ERR("roar_vio_socket_init_decnetnode_def(*): Can\'t resolve node name '%s'", node); 438 if ( ed != NULL ) *ed = '/'; 439 return -1; 440 } 441 442 memcpy(&(def->d.socket.sa.dn.sdn_add.a_addr), ne->n_addr, 2); 443 444 if ( ed != NULL ) *ed = '/'; 445 446 447 return 0; 448 } 449 393 450 int roar_vio_socket_init_decnet_def (struct roar_vio_defaults * def, char * node, int object, char * objname) { 394 451 #ifdef ROAR_HAVE_LIBDNET 452 struct sockaddr_dn * dn; 453 395 454 if ( def == NULL ) 396 455 return -1; … … 402 461 object = roar_vio_socket_get_port(objname, AF_DECnet, SOCK_STREAM); 403 462 404 if ( object == -1 ) 405 return -1; 406 407 return -1; 463 if ( object == -1 ) { 464 if ( objname == NULL ) { 465 return -1; 466 } else { 467 object = 0; 468 } 469 } 470 471 if ( roar_vio_socket_init_socket_def(def, AF_DECnet, SOCK_STREAM) == -1 ) 472 return -1; 473 474 def->d.socket.host = node; 475 dn = &(def->d.socket.sa.dn); 476 dn->sdn_flags = 0; 477 dn->sdn_objnum = object; 478 dn->sdn_nodeaddrl = 2; 479 480 if ( objname == NULL ) { 481 dn->sdn_objnamel = 0; 482 } else { 483 dn->sdn_objnamel = strlen(objname); 484 if ( dn->sdn_objnamel > DN_MAXOBJL ) 485 dn->sdn_objnamel = DN_MAXOBJL; 486 487 memcpy(&(dn->sdn_objname), objname, dn->sdn_objnamel); 488 } 489 490 return 0; 408 491 #else 409 492 return -1;
Note: See TracChangeset
for help on using the changeset viewer.