home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 3
/
hamradioversion3.0examsandprograms1992.iso
/
misc
/
9q920411
/
usock.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-09
|
4KB
|
145 lines
#ifndef _USOCK_H
#define _USOCK_H
#ifndef _MBUF_H
#include "mbuf.h"
#endif
#ifndef _LZW_H
#include "lzw.h"
#endif
#ifndef _PROC_H
#include "proc.h"
#endif
#ifndef _TCP_H
#include "tcp.h"
#endif
#ifndef _UDP_H
#include "udp.h"
#endif
#ifndef _IP_H
#include "ip.h"
#endif
#ifndef _NETROM_H
#include "netrom.h"
#endif
#ifndef _SOCKADDR_H
#include "sockaddr.h"
#endif
struct loc {
struct usock *peer;
struct mbuf *q;
int hiwat; /* Flow control point */
int flags;
#define LOC_SHUTDOWN 1
};
#define NULLLOC (struct loc *)0
#define LOCDFLOW 5 /* dgram socket flow-control point, packets */
#define LOCSFLOW 2048 /* stream socket flow control point, bytes */
#define SOBUF 256 /* Size of buffer for usputc()/usprintf() */
#define SOCKBASE 128 /* Start of socket indexes */
union sp {
struct sockaddr *sa;
struct sockaddr_in *in;
struct sockaddr_ax *ax;
struct sockaddr_nr *nr;
char *p;
};
struct socklink {
int type; /* Socket type */
int (*socket) __ARGS((struct usock *,int));
int (*bind) __ARGS((struct usock *));
int (*listen) __ARGS((struct usock *,int));
int (*connect) __ARGS((struct usock *));
int accept;
int (*recv) __ARGS((struct usock *,struct mbuf **,char *,int *));
int (*send) __ARGS((struct usock *,struct mbuf *,char *to));
int (*qlen) __ARGS((struct usock *,int));
int (*kick) __ARGS((struct usock *));
int (*shut) __ARGS((struct usock *,int));
int (*close) __ARGS((struct usock *));
int (*check) __ARGS((char *,int));
char **error;
char *(*state) __ARGS((struct usock *));
int (*status) __ARGS((struct usock *));
};
extern struct socklink Socklink[];
union cb {
struct tcb *tcb;
struct ax25_cb *ax25;
struct udp_cb *udp;
struct raw_ip *rip;
struct raw_nr *rnr;
struct nr4cb *nr4;
struct loc *local;
char *p;
};
/* User sockets */
struct usock {
struct proc *owner;
int refcnt;
char noblock;
char type;
#define NOTUSED 0
#define TYPE_TCP 1
#define TYPE_UDP 2
#define TYPE_AX25I 3
#define TYPE_AX25UI 4
#define TYPE_RAW 5
#define TYPE_NETROML3 6
#define TYPE_NETROML4 7
#define TYPE_LOCAL_STREAM 8
#define TYPE_LOCAL_DGRAM 9
struct socklink *sp;
int rdysock;
union cb cb;
char *name;
int namelen;
char *peername;
int peernamelen;
char errcodes[4]; /* Protocol-specific error codes */
struct mbuf *obuf; /* Output buffer */
struct mbuf *ibuf; /* Input buffer */
char eol[3]; /* Text mode end-of-line sequence, if any */
char tos; /* Internet type-of-service */
int flag; /* Mode flags, defined in socket.h */
int flush; /* Character to trigger flush, if any */
struct lzw *zout; /* Pointer to compression structure */
struct lzw *zin;
};
#define NULLUSOCK ((struct usock *)0)
extern char *(*Psock[]) __ARGS((struct sockaddr *));
extern char Badsocket[];
extern char *Socktypes[];
extern struct usock *Usock;
extern int Nusock;
extern int16 Lport;
struct usock *itop __ARGS((int s));
void st_garbage __ARGS((int red));
/* In locsocket.c: */
int so_los __ARGS((struct usock *up,int protocol));
int so_lod __ARGS((struct usock *up,int protocol));
int so_lo_recv __ARGS((struct usock *up,struct mbuf **bpp,char *from,
int *fromlen));
int so_los_send __ARGS((struct usock *up,struct mbuf *bp,char *to));
int so_lod_send __ARGS((struct usock *up,struct mbuf *bp,char *to));
int so_lod_qlen __ARGS((struct usock *up,int rtx));
int so_los_qlen __ARGS((struct usock *up,int rtx));
int so_loc_shut __ARGS((struct usock *up,int how));
int so_loc_close __ARGS((struct usock *up));
char *lopsocket __ARGS((struct sockaddr *p));
int so_loc_stat __ARGS((struct usock *up));
#endif /* _USOCK_H */