Submitted by: Mike Mitchell

revise prototypes etc.
cleanups (probably more coming)
This commit is contained in:
Julian Elischer 1995-10-31 00:38:57 +00:00
parent a0135d7e95
commit 74f50111b8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=11947
12 changed files with 179 additions and 131 deletions

View File

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

View File

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

View File

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

View File

@ -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:

View File

@ -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 */

View File

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

View File

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

View File

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

View File

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

View File

@ -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 */

View File

@ -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;
}

View File

@ -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 */