|
|
1.1 ! root 1: /* $Header: bfsgetdoms.c,v 1.1 86/06/27 13:14:35 jqj Exp $ */ ! 2: /* $Log: bfsgetdoms.c,v $ ! 3: * Revision 1.1 86/06/27 13:14:35 jqj ! 4: * Initial revision ! 5: * ! 6: */ ! 7: ! 8: /* get domains served by a CHS server */ ! 9: ! 10: #include <stdio.h> ! 11: #include <sys/types.h> ! 12: #include <netns/ns.h> ! 13: #include <xnscourier/Clearinghouse2.h> ! 14: #include <xnscourier/except.h> ! 15: ! 16: static Cardinal nullhash = 0; ! 17: static Clearinghouse2_Authenticator nullagent = {{0,{0,(Unspecified*)0}}, ! 18: {1,&nullhash}}; ! 19: FILE *outfile; ! 20: ! 21: #define MAXPACKS 20 ! 22: static ! 23: listproc(conn) ! 24: CourierConnection *conn; ! 25: { ! 26: int count, i; ! 27: Unspecified buffer[MAXWORDS*MAXPACKS], *bp, *bufend; ! 28: Clearinghouse2_StreamOfDomainName names; ! 29: ! 30: bufend = buffer; ! 31: bp = buffer+((MAXWORDS-1)*MAXPACKS); /* end of avail. space */ ! 32: while ((count = BDTread(conn, (char*)bufend, ! 33: MAXWORDS*sizeof(Unspecified))) > 0) { ! 34: bufend += count/sizeof(Unspecified); ! 35: if (bufend > bp) { ! 36: fprintf(stderr,"BDT read too big to fit\n"); ! 37: BDTabort(conn); ! 38: } ! 39: } ! 40: bp = buffer; ! 41: while (bp < bufend) { ! 42: bp += internalize_Clearinghouse2_StreamOfDomainName(&names,bp); ! 43: if (0 == (int) names.designator) { ! 44: for (i=0; i < names.nextSegment_case.segment.length; i++) { ! 45: printout(names.nextSegment_case.segment.sequence[i]); ! 46: } ! 47: free(names.nextSegment_case.segment.sequence); ! 48: } else { ! 49: for (i=0; i < names.lastSegment_case.length; i++) { ! 50: printout(names.lastSegment_case.sequence[i]); ! 51: } ! 52: free(names.lastSegment_case.sequence); ! 53: return; ! 54: } ! 55: } ! 56: } ! 57: ! 58: static ! 59: printout(dname) ! 60: Clearinghouse2_DomainName dname; ! 61: { ! 62: /* print out a 2-part domain name */ ! 63: if (strcmp(dname.domain,"...") == 0 && ! 64: strcmp(dname.organization,"...") == 0) ! 65: return; ! 66: fprintf(outfile," \":%s:%s\"",dname.domain,dname.organization); ! 67: } ! 68: ! 69: printdomains(sns) ! 70: struct ns_addr sns; ! 71: { ! 72: CourierConnection *ccon; ! 73: extern char *ns_ntoa(); ! 74: ! 75: sns.x_port = 0; ! 76: ccon = CourierOpen(&sns); ! 77: if (ccon == (CourierConnection *)NULL) return; ! 78: fprintf(outfile,"%s", ns_ntoa(sns)); ! 79: DURING ! 80: Clearinghouse2_ListDomainServed(ccon, listproc, ! 81: BulkData1_immediateSink, nullagent); ! 82: HANDLER { ! 83: } END_HANDLER; ! 84: CourierClose(ccon); ! 85: fprintf(outfile,"\n"); ! 86: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.