diff options
Diffstat (limited to 'sys/netipx')
-rw-r--r-- | sys/netipx/spx.h | 4 | ||||
-rw-r--r-- | sys/netipx/spx_usrreq.c | 23 |
2 files changed, 15 insertions, 12 deletions
diff --git a/sys/netipx/spx.h b/sys/netipx/spx.h index 044b6d4e8df5..2f4d21088312 100644 --- a/sys/netipx/spx.h +++ b/sys/netipx/spx.h @@ -129,7 +129,7 @@ struct spxpcb { 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 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 */ @@ -138,7 +138,7 @@ struct spxpcb { #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 */ +#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 */ diff --git a/sys/netipx/spx_usrreq.c b/sys/netipx/spx_usrreq.c index 67612f94b3fa..8717a2d131c7 100644 --- a/sys/netipx/spx_usrreq.c +++ b/sys/netipx/spx_usrreq.c @@ -417,6 +417,13 @@ drop: m_freem(m); } +void +spx_ctlinput(int cmd, struct sockaddr *arg_as_sa, void *dummy) +{ + + /* Currently, nothing. */ +} + int spx_output(struct spxpcb *cb, struct mbuf *m0) { @@ -520,7 +527,7 @@ spx_output(struct spxpcb *cb, struct mbuf *m0) m->m_len = sizeof(struct spx); m->m_next = m0; si = mtod(m, struct spx *); - si->si_i = *cb->s_ipx; + si->si_i = cb->s_ipx; si->si_s = cb->s_shdr; if ((cb->s_flags & SF_PI) && (cb->s_flags & SF_HO)) { struct spxhdr *sh; @@ -729,7 +736,7 @@ send: m->m_len = sizeof(*si); m->m_pkthdr.len = sizeof(*si); si = mtod(m, struct spx *); - si->si_i = *cb->s_ipx; + si->si_i = cb->s_ipx; si->si_s = cb->s_shdr; si->si_seq = cb->s_smax + 1; si->si_len = htons(sizeof(*si)); @@ -1087,7 +1094,6 @@ spx_attach(struct socket *so, int proto, struct thread *td) ipxp = sotoipxpcb(so); ipxp->ipxp_flags |= IPXP_SPX; - cb->s_ipx = mtod(mm, struct ipx *); cb->s_state = TCPS_LISTEN; cb->s_smax = -1; cb->s_swl1 = -1; @@ -1124,7 +1130,6 @@ spx_pcbdetach(struct ipxpcb *ipxp) KASSERT(cb != NULL, ("spx_pcbdetach: cb == NULL")); spx_reass_flush(cb); - m_free(dtom(cb->s_ipx)); free(cb, M_PCB); ipxp->ipxp_pcb = NULL; } @@ -1490,14 +1495,13 @@ static void spx_template(struct spxpcb *cb) { struct ipxpcb *ipxp = cb->s_ipxpcb; - struct ipx *ipx = cb->s_ipx; struct sockbuf *sb = &(ipxp->ipxp_socket->so_snd); IPX_LOCK_ASSERT(ipxp); - ipx->ipx_pt = IPXPROTO_SPX; - ipx->ipx_sna = ipxp->ipxp_laddr; - ipx->ipx_dna = ipxp->ipxp_faddr; + cb->s_ipx.ipx_pt = IPXPROTO_SPX; + cb->s_ipx.ipx_sna = ipxp->ipxp_laddr; + cb->s_ipx.ipx_dna = ipxp->ipxp_faddr; SPX_LOCK(); cb->s_sid = htons(spx_iss); spx_iss += SPX_ISSINCR/2; @@ -1519,8 +1523,7 @@ spx_template(struct spxpcb *cb) /* * Close a SPIP control block. Wake up any sleepers. We used to free any - * queued packets and cb->s_ipx here, but now we defer that until the pcb is - * discarded. + * queued packets, but now we defer that until the pcb is discarded. */ void spx_close(struct spxpcb *cb) |