|
|
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.