xref: /csrg-svn/sys/tests/netiso/Tesis.c (revision 49352)
1*49352Sbostic /*-
2*49352Sbostic  * Copyright (c) 1988, 1990 The Regents of the University of California.
349346Ssklower  * All rights reserved.
449346Ssklower  *
549346Ssklower  * %sccs.include.redist.c%
649346Ssklower  */
7*49352Sbostic 
8*49352Sbostic #ifndef lint
9*49352Sbostic char copyright[] =
10*49352Sbostic "@(#) Copyright (c) 1988, 1990 The Regents of the University of California.\n\
11*49352Sbostic  All rights reserved.\n";
12*49352Sbostic #endif /* not lint */
13*49352Sbostic 
14*49352Sbostic #ifndef lint
15*49352Sbostic static char sccsid[] = "@(#)Tesis.c	7.1 (Berkeley) 05/07/91";
16*49352Sbostic #endif /* not lint */
17*49352Sbostic 
1849346Ssklower /* Modifications
1949346Ssklower  * Copyright (c) 1990 Robert Hagens
2049346Ssklower  */
2149346Ssklower 
2249346Ssklower /*
2349346Ssklower  * This is a test program to listen to esis packets.
2449346Ssklower  */
2549346Ssklower #include <sys/param.h>
2649346Ssklower #include <sys/uio.h>
2749346Ssklower #include <sys/socket.h>
2849346Ssklower #include <sys/ioctl.h>
2949346Ssklower #include <net/route.h>
3049346Ssklower #include <net/if.h>
3149346Ssklower #define  TCPT_NTIMERS 4
3249346Ssklower #include <netiso/iso.h>
3349346Ssklower #include <netiso/tp_param.h>
3449346Ssklower #include <netiso/tp_user.h>
3549346Ssklower 
3649346Ssklower #include <stdio.h>
3749346Ssklower #include <errno.h>
3849346Ssklower #include <ctype.h>
3949346Ssklower #include <netdb.h>
4049346Ssklower 
4149346Ssklower 
4249346Ssklower #define dbprintf if(verbose)printf
4349346Ssklower #define try(a,b,c) {x = (a b); dbprintf("%s%s returns %d\n",c,"a",x);\
4449346Ssklower 		if(x<0) {perror("a"); myexit(0);}}
4549346Ssklower 
4649346Ssklower 
4749346Ssklower struct  ifreq ifr;
4849346Ssklower short port = 3000;
4949346Ssklower struct  sockaddr_iso faddr, laddr = { sizeof(laddr), AF_ISO };
5049346Ssklower struct  sockaddr_iso *siso = &laddr;
5149346Ssklower char **xenvp;
5249346Ssklower 
5349346Ssklower long size, count = 10, forkp, confp, echop, mynamep, verbose = 1, playtag = 0;
5449346Ssklower long records, intercept = 0, isode_mode;
5549346Ssklower 
5649346Ssklower char buf[2048];
5749346Ssklower char your_it[] = "You're it!";
5849346Ssklower 
5949346Ssklower char *Servername;
6049346Ssklower 
main(argc,argv,envp)6149346Ssklower main(argc, argv, envp)
6249346Ssklower int argc;
6349346Ssklower char *argv[];
6449346Ssklower char *envp[];
6549346Ssklower {
6649346Ssklower 	tisink();
6749346Ssklower }
6849346Ssklower #define BIG 2048
6949346Ssklower #define MIDLIN 512
7049346Ssklower char readbuf[BIG];
7149346Ssklower struct iovec iov[1] = {
7249346Ssklower 	readbuf,
7349346Ssklower 	sizeof readbuf,
7449346Ssklower };
7549346Ssklower char name[MIDLIN];
7649346Ssklower union {
7749346Ssklower     struct {
7849346Ssklower 	    struct cmsghdr	cmhdr;
7949346Ssklower 	    char		cmdata[128 - sizeof(struct cmsghdr)];
8049346Ssklower     } cm;
8149346Ssklower     char data[128];
8249346Ssklower } cbuf;
8349346Ssklower #define control cbuf.data
8449346Ssklower struct msghdr msghdr = {
8549346Ssklower 	name, sizeof(name),
8649346Ssklower 	iov, sizeof(iov)/sizeof(iov[1]),
8749346Ssklower 	control, sizeof control,
8849346Ssklower 	0 /* flags */
8949346Ssklower };
9049346Ssklower 
tisink()9149346Ssklower tisink()
9249346Ssklower {
9349346Ssklower 	int x, s, pid, on = 1, loop = 0, n, fromlen, flags = 0;
9449346Ssklower 	extern int errno;
9549346Ssklower 
9649346Ssklower 	try(socket, (AF_ISO, SOCK_DGRAM, ISOPROTO_ESIS),"");
9749346Ssklower 	s = x;
9849346Ssklower 
9949346Ssklower 	for(;;) {
10049346Ssklower 		fromlen = sizeof(name);
10149346Ssklower 		try(recvfrom, (s, readbuf, sizeof(readbuf), flags,
10249346Ssklower 			name, &fromlen), "");
10349346Ssklower 		n = x;
10449346Ssklower 		dumpit("connection from:", name, fromlen);
10549346Ssklower 		dumpit("packet is:", readbuf, n);
10649346Ssklower 	}
10749346Ssklower }
answerback(flags,n,ns)10849346Ssklower answerback(flags, n, ns)
10949346Ssklower {
11049346Ssklower 	msghdr.msg_controllen = 0;
11149346Ssklower 	msghdr.msg_iovlen = 1;
11249346Ssklower 	iov->iov_len = n;
11349346Ssklower 	n = sendmsg(ns, &msghdr, flags);
11449346Ssklower 	dbprintf("echoed %d\n", n);
11549346Ssklower 	return n;
11649346Ssklower }
11749346Ssklower 
dumpit(what,where,n)11849346Ssklower dumpit(what, where, n)
11949346Ssklower char *what; unsigned short *where; int n;
12049346Ssklower {
12149346Ssklower 	unsigned short *s = where;
12249346Ssklower 	unsigned short *z = where + (n+1)/2;
12349346Ssklower 	int count = 0;
12449346Ssklower 	printf(what);
12549346Ssklower 	while(s < z) {
12649346Ssklower 		count++;
12749346Ssklower 		printf("%x ",*s++);
12849346Ssklower 		if ((count & 15) == 0)
12949346Ssklower 			putchar('\n');
13049346Ssklower 	}
13149346Ssklower 	if (count & 15)
13249346Ssklower 		putchar('\n');
13349346Ssklower 	fflush(stdout);
13449346Ssklower }
myexit(n)13549346Ssklower myexit(n)
13649346Ssklower {
13749346Ssklower 	fflush(stderr);
13849346Ssklower 	printf("got %d records\n", records);
13949346Ssklower 	fflush(stdout);
14049346Ssklower 	exit(n);
14149346Ssklower }
142