/* * Please do not edit this file. * It was generated using rpcgen. */ #include "prot.h" #include #include #include #include #include #include #include #include #include #include #include "protRelay_svc.c" SVCXPRT * protRelay() { SVCXPRT *transp = 0; SVCXPRT *rval = 0; const struct sockaddr_in *ca; struct sockaddr_in me; int sd = -1; if ( ! createRssibMapClnt( MAP_MC_ADDRESS, 0 ) ) { printErrMsg( "Unable to create MAP client\n" ); goto bail; } ca = getRssibMapClntAddr(); /* FIXME */ printf("Client created at port %hu\n", ntohs( ca->sin_port )); if ( (sd = socket( AF_INET, SOCK_STREAM, 0 )) < 0 ) { perror( "Unable to create server socket" ); goto bail; } me.sin_family = AF_INET; me.sin_addr.s_addr = INADDR_ANY; me.sin_port = htons( RELAY_SERVER_PORT ); if ( bind( sd, (struct sockaddr*)&me, sizeof(me) ) ) { perror( "Unable to bind server socket" ); goto bail; } pmap_unset (RSSIB_REL, RSSIB_REL_V0); transp = svctcp_create(sd, 0, 0); if (transp == NULL) { printErrMsg( "%s", "cannot create tcp service." ); goto bail; } /* sd now owned by transport */ sd = -1; if ( !svc_register( transp, RSSIB_REL, RSSIB_REL_V0, rssib_rel_0, 0 == RELAY_SERVER_PORT ? IPPROTO_TCP : 0 ) ) { printErrMsg( "%s", "unable to register (RSSIB_MAP, RSSIB_V0, %s).", 0 == RELAY_SERVER_PORT ? "tcp" : "" ); goto bail; } rval = transp; transp = 0; bail: if ( transp ) svc_destroy( transp ); if ( sd >= 0 ) close(sd); return rval; }