Submitted by: Mike Mitchell
revise prototypes etc. cleanups (probably more coming)
This commit is contained in:
parent
a0135d7e95
commit
74f50111b8
@ -156,6 +156,8 @@ struct ipx {
|
||||
|
||||
#ifdef KERNEL
|
||||
|
||||
#include <net/route.h>
|
||||
|
||||
extern int ipxcksum;
|
||||
extern struct domain ipxdomain;
|
||||
extern struct sockaddr_ipx ipx_netmask;
|
||||
@ -171,16 +173,28 @@ extern long ipx_pexseq;
|
||||
extern u_char ipxctlerrmap[];
|
||||
extern struct ipxpcb ipxrawpcb;
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
u_short ipx_cksum();
|
||||
void ipx_input(), ipx_abort(), ipx_drop();
|
||||
int ipx_output(), ipx_ctloutput(), ipx_usrreq();
|
||||
int ipx_raw_usrreq(), ipx_control(), ipx_do_route();
|
||||
void ipx_init(), ipxintr(), ipx_ctlinput(), ipx_forward();
|
||||
void ipx_undo_route(), ipx_watch_output();
|
||||
int ipx_outputfl();
|
||||
__BEGIN_DECLS
|
||||
u_short ipx_cksum __P((struct mbuf *m, int len));
|
||||
void ipx_input __P((struct mbuf *m, struct ipxpcb *ipxp));
|
||||
void ipx_abort __P((struct ipxpcb *ipxp));
|
||||
void ipx_drop __P((struct ipxpcb *ipxp, int errno));
|
||||
int ipx_output __P((struct ipxpcb *ipxp, struct mbuf *m0));
|
||||
int ipx_ctloutput __P((int req, struct socket *so, int level, int name, struct mbuf **value));
|
||||
int ipx_usrreq __P((struct socket *so, int req, struct mbuf *m, struct mbuf *nam, struct mbuf *control));
|
||||
int ipx_raw_usrreq __P((struct socket *so, int req, struct mbuf *m, struct mbuf *nam, struct mbuf *control));
|
||||
int ipx_control __P((struct socket *so, int cmd, caddr_t data, struct ifnet *ifp));
|
||||
void ipx_init __P((void));
|
||||
void ipxintr __P((void));
|
||||
void ipx_ctlinput __P((int cmd, caddr_t arg));
|
||||
void ipx_forward __P((struct mbuf *m));
|
||||
void ipx_watch_output __P((struct mbuf *m, struct ifnet *ifp));
|
||||
int ipx_do_route __P((struct ipx_addr *src, struct route *ro));
|
||||
void ipx_undo_route __P((struct route *ro));
|
||||
int ipx_outputfl __P((struct mbuf *m0, struct route *ro, int flags));
|
||||
__END_DECLS
|
||||
|
||||
int ipxip_route();
|
||||
#else
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
@ -188,7 +202,6 @@ int ipxip_route();
|
||||
__BEGIN_DECLS
|
||||
extern struct ipx_addr ipx_addr __P((const char *));
|
||||
extern char *ipx_ntoa __P((struct ipx_addr));
|
||||
extern char *_ns_spectHex __P((const char *));
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
@ -90,9 +90,19 @@ struct ipx_errstat {
|
||||
};
|
||||
|
||||
#ifdef KERNEL
|
||||
|
||||
extern struct ipx_errstat ipx_errstat;
|
||||
int ipx_err_x(), ipx_echo();
|
||||
void ipx_error(), ipx_printhost(), ipx_err_input();
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
int ipx_err_x __P((int c));
|
||||
int ipx_echo __P((struct mbuf *m));
|
||||
void ipx_error __P((struct mbuf *om, int type, int param));
|
||||
void ipx_printhost __P((struct ipx_addr *addr));
|
||||
void ipx_err_input __P((struct mbuf *m));
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -80,11 +80,18 @@ struct ipxip_req {
|
||||
#endif
|
||||
|
||||
#ifdef KERNEL
|
||||
|
||||
extern struct ifqueue ipxintrq; /* IPX input packet queue */
|
||||
extern struct ipx_ifaddr *ipx_ifaddr;
|
||||
int ipx_ifinit();
|
||||
void ipx_ifscrub();
|
||||
struct ipx_ifaddr *ipx_iaonnetof();
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
int ipx_ifinit __P((struct ifnet *ifp, struct ipx_ifaddr *ia, struct sockaddr_ipx *sipx, int scrub));
|
||||
void ipx_ifscrub __P((struct ifnet *ifp, struct ipx_ifaddr *ia));
|
||||
struct ipx_ifaddr *ipx_iaonnetof __P((struct ipx_addr *dst));
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -314,7 +314,7 @@ ipx_ctlinput(cmd, arg)
|
||||
switch (type) {
|
||||
|
||||
case IPX_ERR_UNREACH_HOST:
|
||||
ipx_pcbnotify(ipx, (int)ipxctlerrmap[cmd], ipx_abort, (long)0);
|
||||
ipx_pcbnotify(ipx, (int)ipxctlerrmap[cmd], ipx_abort, NULL);
|
||||
break;
|
||||
|
||||
case IPX_ERR_NOSOCK:
|
||||
|
@ -63,23 +63,7 @@
|
||||
|
||||
#include <netipx/ipx.h>
|
||||
#include <netipx/ipx_if.h>
|
||||
|
||||
struct ifnet_en {
|
||||
struct ifnet ifen_ifnet;
|
||||
struct route ifen_route;
|
||||
struct in_addr ifen_src;
|
||||
struct in_addr ifen_dst;
|
||||
struct ifnet_en *ifen_next;
|
||||
};
|
||||
|
||||
void ipxipstart();
|
||||
int ipxipoutput(), ipxipioctl();
|
||||
void ipxip_input();
|
||||
int ipxip_free();
|
||||
void ipxip_ctlinput();
|
||||
void ipxip_rtchange();
|
||||
|
||||
#define LOMTU (1024+512);
|
||||
#include <netipx/ipx_ip.h>
|
||||
|
||||
struct ifnet ipxipif;
|
||||
struct ifnet_en *ipxip_list; /* list of all hosts and gateways or broadcast addrs */
|
||||
|
@ -78,11 +78,23 @@ struct ipxpcb {
|
||||
|
||||
|
||||
#ifdef KERNEL
|
||||
|
||||
extern struct ipxpcb ipxpcb; /* head of list */
|
||||
int ipx_pcballoc(), ipx_pcbbind(), ipx_pcbconnect();
|
||||
void ipx_pcbdisconnect(), ipx_pcbdetach(), ipx_setsockaddr();
|
||||
void ipx_setpeeraddr(), ipx_pcbnotify();
|
||||
struct ipxpcb *ipx_pcblookup();
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
int ipx_pcballoc __P((struct socket *so, struct ipxpcb *head));
|
||||
int ipx_pcbbind __P((struct ipxpcb *ipxp, struct mbuf *nam));
|
||||
int ipx_pcbconnect __P((struct ipxpcb *ipxp, struct mbuf *nam));
|
||||
void ipx_pcbdisconnect __P((struct ipxpcb *ipxp));
|
||||
void ipx_pcbdetach __P((struct ipxpcb *ipxp));
|
||||
void ipx_setsockaddr __P((struct ipxpcb *ipxp, struct mbuf *nam));
|
||||
void ipx_setpeeraddr __P((struct ipxpcb *ipxp, struct mbuf *nam));
|
||||
void ipx_pcbnotify __P((struct ipx_addr *dst, int errno, int (*notify)(), long param));
|
||||
struct ipxpcb *ipx_pcblookup __P((struct ipx_addr *faddr, int lport, int wildp));
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -47,11 +47,14 @@
|
||||
#include <net/if.h>
|
||||
#include <net/route.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
#include <netipx/ipx.h>
|
||||
#include <netipx/ipx_pcb.h>
|
||||
#include <netipx/ipx_if.h>
|
||||
#include <netipx/ipx_var.h>
|
||||
#include <netipx/ipx_error.h>
|
||||
#include <netipx/ipx_ip.h>
|
||||
|
||||
/*
|
||||
* IPX protocol implementation.
|
||||
|
115
sys/netipx/spx.h
115
sys/netipx/spx.h
@ -83,15 +83,114 @@ struct spx_q {
|
||||
#define si_ack si_s.spx_ack
|
||||
#define si_alo si_s.spx_alo
|
||||
|
||||
/*
|
||||
* SPX control block, one per connection
|
||||
*/
|
||||
struct spxpcb {
|
||||
struct spx_q s_q; /* queue for out-of-order receipt */
|
||||
struct ipxpcb *s_ipxpcb; /* backpointer to internet pcb */
|
||||
u_char s_state;
|
||||
u_char s_flags;
|
||||
#define SF_ACKNOW 0x01 /* Ack peer immediately */
|
||||
#define SF_DELACK 0x02 /* Ack, but try to delay it */
|
||||
#define SF_HI 0x04 /* Show headers on input */
|
||||
#define SF_HO 0x08 /* Show headers on output */
|
||||
#define SF_PI 0x10 /* Packet (datagram) interface */
|
||||
#define SF_WIN 0x20 /* Window info changed */
|
||||
#define SF_RXT 0x40 /* Rxt info changed */
|
||||
#define SF_RVD 0x80 /* Calling from read usrreq routine */
|
||||
u_short s_mtu; /* Max packet size for this stream */
|
||||
/* use sequence fields in headers to store sequence numbers for this
|
||||
connection */
|
||||
struct ipx *s_ipx;
|
||||
struct spxhdr s_shdr; /* prototype header to transmit */
|
||||
#define s_cc s_shdr.spx_cc /* connection control (for EM bit) */
|
||||
#define s_dt s_shdr.spx_dt /* datastream type */
|
||||
#define s_sid s_shdr.spx_sid /* source connection identifier */
|
||||
#define s_did s_shdr.spx_did /* destination connection identifier */
|
||||
#define s_seq s_shdr.spx_seq /* sequence number */
|
||||
#define s_ack s_shdr.spx_ack /* acknowledge number */
|
||||
#define s_alo s_shdr.spx_alo /* allocation number */
|
||||
#define s_dport s_ipx->ipx_dna.x_port /* where we are sending */
|
||||
struct spxhdr s_rhdr; /* last received header (in effect!)*/
|
||||
u_short s_rack; /* their acknowledge number */
|
||||
u_short s_ralo; /* their allocation number */
|
||||
u_short s_smax; /* highest packet # we have sent */
|
||||
u_short s_snxt; /* which packet to send next */
|
||||
|
||||
/* congestion control */
|
||||
#define CUNIT 1024 /* scaling for ... */
|
||||
int s_cwnd; /* Congestion-controlled window */
|
||||
/* in packets * CUNIT */
|
||||
short s_swnd; /* == tcp snd_wnd, in packets */
|
||||
short s_smxw; /* == tcp max_sndwnd */
|
||||
/* difference of two spx_seq's can be
|
||||
no bigger than a short */
|
||||
u_short s_swl1; /* == tcp snd_wl1 */
|
||||
u_short s_swl2; /* == tcp snd_wl2 */
|
||||
int s_cwmx; /* max allowable cwnd */
|
||||
int s_ssthresh; /* s_cwnd size threshhold for
|
||||
* slow start exponential-to-
|
||||
* linear switch */
|
||||
/* transmit timing stuff
|
||||
* srtt and rttvar are stored as fixed point, for convenience in smoothing.
|
||||
* srtt has 3 bits to the right of the binary point, rttvar has 2.
|
||||
*/
|
||||
short s_idle; /* time idle */
|
||||
#define SPXT_NTIMERS 4
|
||||
short s_timer[SPXT_NTIMERS]; /* timers */
|
||||
short s_rxtshift; /* log(2) of rexmt exp. backoff */
|
||||
short s_rxtcur; /* current retransmit value */
|
||||
u_short s_rtseq; /* packet being timed */
|
||||
short s_rtt; /* timer for round trips */
|
||||
short s_srtt; /* averaged timer */
|
||||
short s_rttvar; /* variance in round trip time */
|
||||
char s_force; /* which timer expired */
|
||||
char s_dupacks; /* counter to intuit xmt loss */
|
||||
|
||||
/* out of band data */
|
||||
char s_oobflags;
|
||||
#define SF_SOOB 0x08 /* sending out of band data */
|
||||
#define SF_IOOB 0x10 /* receiving out of band data */
|
||||
char s_iobc; /* input characters */
|
||||
/* debug stuff */
|
||||
u_short s_want; /* Last candidate for sending */
|
||||
char s_outx; /* exit taken from spx_output */
|
||||
char s_inx; /* exit taken from spx_input */
|
||||
u_short s_flags2; /* more flags for testing */
|
||||
#define SF_NEWCALL 0x100 /* for new_recvmsg */
|
||||
#define SO_NEWCALL 10 /* for new_recvmsg */
|
||||
};
|
||||
|
||||
#define ipxtospxpcb(np) ((struct spxpcb *)(np)->ipxp_pcb)
|
||||
#define sotospxpcb(so) (ipxtospxpcb(sotoipxpcb(so)))
|
||||
|
||||
#ifdef KERNEL
|
||||
int spx_reass(), spx_output();
|
||||
int spx_usrreq(), spx_usrreq_sp(), spx_ctloutput();
|
||||
void spx_input(), spx_ctlinput();
|
||||
void spx_init(), spx_fasttimo(), spx_slowtimo();
|
||||
void spx_quench(), spx_setpersist(), spx_template(), spx_abort();
|
||||
struct spxpcb *spx_close(), *spx_usrclosed();
|
||||
struct spxpcb *spx_disconnect(), *spx_drop();
|
||||
struct spxpcb *spx_timers();
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
int spx_reass __P((struct spxpcb *cb, struct spx *si));
|
||||
int spx_output __P((struct spxpcb *cb, struct mbuf *m0));
|
||||
int spx_usrreq __P((struct socket *so, int req, struct mbuf *m, struct mbuf *nam, struct mbuf *controlp));
|
||||
int spx_usrreq_sp __P((struct socket *so, int req, struct mbuf *m, struct mbuf *nam, struct mbuf *controlp));
|
||||
int spx_ctloutput __P((int req, struct socket *so, int level, int name, struct mbuf **value));
|
||||
void spx_input __P((struct mbuf *m, struct ipxpcb *ipxp));
|
||||
void spx_ctlinput __P((int cmd, caddr_t arg));
|
||||
void spx_init __P((void));
|
||||
void spx_fasttimo __P((void));
|
||||
void spx_slowtimo __P((void));
|
||||
void spx_quench __P((struct ipxpcb *ipxp));
|
||||
void spx_setpersist __P((struct spxpcb *cb));
|
||||
void spx_template __P((struct spxpcb *cb));
|
||||
void spx_abort __P((struct ipxpcb *ipxp));
|
||||
struct spxpcb *spx_close __P((struct spxpcb *cb));
|
||||
struct spxpcb *spx_usrclosed __P((struct spxpcb *cb));
|
||||
struct spxpcb *spx_disconnect __P((struct spxpcb *cb));
|
||||
struct spxpcb *spx_drop __P((struct spxpcb *cb, int errno));
|
||||
struct spxpcb *spx_timers __P((struct spxpcb *cb, int timer));
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -64,12 +64,16 @@ int spx_debx;
|
||||
|
||||
#ifdef KERNEL
|
||||
|
||||
void spx_trace();
|
||||
|
||||
extern char *prurequests[];
|
||||
extern char *sanames[];
|
||||
extern char *tcpstates[];
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
void spx_trace __P((int act, int ostate, struct spxpcb *sp, struct spx *si, int req));
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -41,8 +41,6 @@
|
||||
* Definitions of the SPX timers. These timers are counted
|
||||
* down PR_SLOWHZ times a second.
|
||||
*/
|
||||
#define SPXT_NTIMERS 4
|
||||
|
||||
#define SPXT_REXMT 0 /* retransmit */
|
||||
#define SPXT_PERSIST 1 /* retransmit persistance */
|
||||
#define SPXT_KEEP 2 /* keep alive */
|
||||
|
@ -1696,8 +1696,7 @@ spx_slowtimo()
|
||||
if (cb->s_timer[i] && --cb->s_timer[i] == 0) {
|
||||
(void) spx_usrreq(cb->s_ipxpcb->ipxp_socket,
|
||||
PRU_SLOWTIMO, (struct mbuf *)0,
|
||||
(struct mbuf *)i, (struct mbuf *)0,
|
||||
(struct mbuf *)0);
|
||||
(struct mbuf *)i, (struct mbuf *)0);
|
||||
if (ipnxt->ipxp_prev != ip)
|
||||
goto tpgone;
|
||||
}
|
||||
|
@ -37,87 +37,6 @@
|
||||
#ifndef _NETIPX_SPX_VAR_H_
|
||||
#define _NETIPX_SPX_VAR_H_
|
||||
|
||||
/*
|
||||
* SPX control block, one per connection
|
||||
*/
|
||||
struct spxpcb {
|
||||
struct spx_q s_q; /* queue for out-of-order receipt */
|
||||
struct ipxpcb *s_ipxpcb; /* backpointer to internet pcb */
|
||||
u_char s_state;
|
||||
u_char s_flags;
|
||||
#define SF_ACKNOW 0x01 /* Ack peer immediately */
|
||||
#define SF_DELACK 0x02 /* Ack, but try to delay it */
|
||||
#define SF_HI 0x04 /* Show headers on input */
|
||||
#define SF_HO 0x08 /* Show headers on output */
|
||||
#define SF_PI 0x10 /* Packet (datagram) interface */
|
||||
#define SF_WIN 0x20 /* Window info changed */
|
||||
#define SF_RXT 0x40 /* Rxt info changed */
|
||||
#define SF_RVD 0x80 /* Calling from read usrreq routine */
|
||||
u_short s_mtu; /* Max packet size for this stream */
|
||||
/* use sequence fields in headers to store sequence numbers for this
|
||||
connection */
|
||||
struct ipx *s_ipx;
|
||||
struct spxhdr s_shdr; /* prototype header to transmit */
|
||||
#define s_cc s_shdr.spx_cc /* connection control (for EM bit) */
|
||||
#define s_dt s_shdr.spx_dt /* datastream type */
|
||||
#define s_sid s_shdr.spx_sid /* source connection identifier */
|
||||
#define s_did s_shdr.spx_did /* destination connection identifier */
|
||||
#define s_seq s_shdr.spx_seq /* sequence number */
|
||||
#define s_ack s_shdr.spx_ack /* acknowledge number */
|
||||
#define s_alo s_shdr.spx_alo /* allocation number */
|
||||
#define s_dport s_ipx->ipx_dna.x_port /* where we are sending */
|
||||
struct spxhdr s_rhdr; /* last received header (in effect!)*/
|
||||
u_short s_rack; /* their acknowledge number */
|
||||
u_short s_ralo; /* their allocation number */
|
||||
u_short s_smax; /* highest packet # we have sent */
|
||||
u_short s_snxt; /* which packet to send next */
|
||||
|
||||
/* congestion control */
|
||||
#define CUNIT 1024 /* scaling for ... */
|
||||
int s_cwnd; /* Congestion-controlled window */
|
||||
/* in packets * CUNIT */
|
||||
short s_swnd; /* == tcp snd_wnd, in packets */
|
||||
short s_smxw; /* == tcp max_sndwnd */
|
||||
/* difference of two spx_seq's can be
|
||||
no bigger than a short */
|
||||
u_short s_swl1; /* == tcp snd_wl1 */
|
||||
u_short s_swl2; /* == tcp snd_wl2 */
|
||||
int s_cwmx; /* max allowable cwnd */
|
||||
int s_ssthresh; /* s_cwnd size threshhold for
|
||||
* slow start exponential-to-
|
||||
* linear switch */
|
||||
/* transmit timing stuff
|
||||
* srtt and rttvar are stored as fixed point, for convenience in smoothing.
|
||||
* srtt has 3 bits to the right of the binary point, rttvar has 2.
|
||||
*/
|
||||
short s_idle; /* time idle */
|
||||
short s_timer[SPXT_NTIMERS]; /* timers */
|
||||
short s_rxtshift; /* log(2) of rexmt exp. backoff */
|
||||
short s_rxtcur; /* current retransmit value */
|
||||
u_short s_rtseq; /* packet being timed */
|
||||
short s_rtt; /* timer for round trips */
|
||||
short s_srtt; /* averaged timer */
|
||||
short s_rttvar; /* variance in round trip time */
|
||||
char s_force; /* which timer expired */
|
||||
char s_dupacks; /* counter to intuit xmt loss */
|
||||
|
||||
/* out of band data */
|
||||
char s_oobflags;
|
||||
#define SF_SOOB 0x08 /* sending out of band data */
|
||||
#define SF_IOOB 0x10 /* receiving out of band data */
|
||||
char s_iobc; /* input characters */
|
||||
/* debug stuff */
|
||||
u_short s_want; /* Last candidate for sending */
|
||||
char s_outx; /* exit taken from spx_output */
|
||||
char s_inx; /* exit taken from spx_input */
|
||||
u_short s_flags2; /* more flags for testing */
|
||||
#define SF_NEWCALL 0x100 /* for new_recvmsg */
|
||||
#define SO_NEWCALL 10 /* for new_recvmsg */
|
||||
};
|
||||
|
||||
#define ipxtospxpcb(np) ((struct spxpcb *)(np)->ipxp_pcb)
|
||||
#define sotospxpcb(so) (ipxtospxpcb(sotoipxpcb(so)))
|
||||
|
||||
struct spxstat {
|
||||
long spxs_connattempt; /* connections initiated */
|
||||
long spxs_accepts; /* connections accepted */
|
||||
|
Loading…
Reference in New Issue
Block a user