diff options
author | Michael Tokarev <mjt@tls.msk.ru> | 2013-07-13 13:10:05 +0400 |
---|---|---|
committer | Michael Tokarev <mjt@tls.msk.ru> | 2013-07-19 12:52:03 +0400 |
commit | 5b1eb29cba91625c7f8f4ed00a9618e8ccb70f41 (patch) | |
tree | 33fd47d3b0b088dfe36cb90921d33ff6a7daf8e7 | |
parent | 09857d8f6b26698f9f4ea0c0e65907521ac622e1 (diff) | |
download | slirp-1.6.0-rc1.zip slirp-1.6.0-rc1.tar.gz slirp-1.6.0-rc1.tar.bz2 |
slirp: remove mbuf(m_hdr,m_dat) indirectionv1.6.2v1.6.1v1.6.0-rc3v1.6.0-rc2v1.6.0-rc1v1.6.0-rc0v1.6.0
-rw-r--r-- | mbuf.h | 51 | ||||
-rw-r--r-- | tcp_subr.c | 24 |
2 files changed, 29 insertions, 46 deletions
@@ -49,22 +49,6 @@ * free the m_ext. This is inefficient memory-wise, but who cares. */ -/* XXX should union some of these! */ -/* header at beginning of each mbuf: */ -struct m_hdr { - struct mbuf *mh_next; /* Linked list of mbufs */ - struct mbuf *mh_prev; - struct mbuf *mh_nextpkt; /* Next packet in queue/record */ - struct mbuf *mh_prevpkt; /* Flags aren't used in the output queue */ - int mh_flags; /* Misc flags */ - - int mh_size; /* Size of data */ - struct socket *mh_so; - - caddr_t mh_data; /* Location of data */ - int mh_len; /* Amount of data in this mbuf */ -}; - /* * How much room is in the mbuf, from m_data to the end of the mbuf */ @@ -79,29 +63,30 @@ struct m_hdr { #define M_TRAILINGSPACE M_FREEROOM struct mbuf { - struct m_hdr m_hdr; + /* XXX should union some of these! */ + /* header at beginning of each mbuf: */ + struct mbuf *m_next; /* Linked list of mbufs */ + struct mbuf *m_prev; + struct mbuf *m_nextpkt; /* Next packet in queue/record */ + struct mbuf *m_prevpkt; /* Flags aren't used in the output queue */ + int m_flags; /* Misc flags */ + + int m_size; /* Size of data */ + struct socket *m_so; + + caddr_t m_data; /* Location of data */ + int m_len; /* Amount of data in this mbuf */ + Slirp *slirp; bool arp_requested; uint64_t expiration_date; /* start of dynamic buffer area, must be last element */ - union M_dat { - char m_dat_[1]; /* ANSI don't like 0 sized arrays */ - char *m_ext_; - } M_dat; + union { + char m_dat[1]; /* ANSI don't like 0 sized arrays */ + char *m_ext; + }; }; -#define m_next m_hdr.mh_next -#define m_prev m_hdr.mh_prev -#define m_nextpkt m_hdr.mh_nextpkt -#define m_prevpkt m_hdr.mh_prevpkt -#define m_flags m_hdr.mh_flags -#define m_len m_hdr.mh_len -#define m_data m_hdr.mh_data -#define m_size m_hdr.mh_size -#define m_dat M_dat.m_dat_ -#define m_ext M_dat.m_ext_ -#define m_so m_hdr.mh_so - #define ifq_prev m_prev #define ifq_next m_next #define ifs_prev m_prevpkt @@ -641,7 +641,7 @@ int tcp_emu(struct socket *so, struct mbuf *m) n4 = (laddr & 0xff); m->m_len = bptr - m->m_data; /* Adjust length */ - m->m_len += snprintf(bptr, m->m_hdr.mh_size - m->m_len, + m->m_len += snprintf(bptr, m->m_size - m->m_len, "ORT %d,%d,%d,%d,%d,%d\r\n%s", n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); return 1; @@ -677,7 +677,7 @@ int tcp_emu(struct socket *so, struct mbuf *m) m->m_len = bptr - m->m_data; /* Adjust length */ m->m_len += - snprintf(bptr, m->m_hdr.mh_size - m->m_len, + snprintf(bptr, m->m_size - m->m_len, "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); @@ -703,9 +703,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) if (m->m_data[m->m_len - 1] == '\0' && lport != 0 && (so = tcp_listen(slirp, INADDR_ANY, 0, so->so_laddr.s_addr, htons(lport), SS_FACCEPTONCE)) != NULL) - m->m_len = snprintf(m->m_data, m->m_hdr.mh_size, "%d", - ntohs(so->so_fport)) + - 1; + m->m_len = + snprintf(m->m_data, m->m_size, "%d", ntohs(so->so_fport)) + 1; return 1; case EMU_IRC: @@ -723,10 +722,9 @@ int tcp_emu(struct socket *so, struct mbuf *m) return 1; } m->m_len = bptr - m->m_data; /* Adjust length */ - m->m_len += - snprintf(bptr, m->m_hdr.mh_size, "DCC CHAT chat %lu %u%c\n", - (unsigned long)ntohl(so->so_faddr.s_addr), - ntohs(so->so_fport), 1); + m->m_len += snprintf(bptr, m->m_size, "DCC CHAT chat %lu %u%c\n", + (unsigned long)ntohl(so->so_faddr.s_addr), + ntohs(so->so_fport), 1); } else if (sscanf(bptr, "DCC SEND %256s %u %u %u", buff, &laddr, &lport, &n1) == 4) { if ((so = tcp_listen(slirp, INADDR_ANY, 0, htonl(laddr), @@ -735,8 +733,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) } m->m_len = bptr - m->m_data; /* Adjust length */ m->m_len += - snprintf(bptr, m->m_hdr.mh_size, "DCC SEND %s %lu %u %u%c\n", - buff, (unsigned long)ntohl(so->so_faddr.s_addr), + snprintf(bptr, m->m_size, "DCC SEND %s %lu %u %u%c\n", buff, + (unsigned long)ntohl(so->so_faddr.s_addr), ntohs(so->so_fport), n1, 1); } else if (sscanf(bptr, "DCC MOVE %256s %u %u %u", buff, &laddr, &lport, &n1) == 4) { @@ -746,8 +744,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) } m->m_len = bptr - m->m_data; /* Adjust length */ m->m_len += - snprintf(bptr, m->m_hdr.mh_size, "DCC MOVE %s %lu %u %u%c\n", - buff, (unsigned long)ntohl(so->so_faddr.s_addr), + snprintf(bptr, m->m_size, "DCC MOVE %s %lu %u %u%c\n", buff, + (unsigned long)ntohl(so->so_faddr.s_addr), ntohs(so->so_fport), n1, 1); } return 1; |