Changeset 1076 in vbox
- Timestamp:
- Feb 27, 2007 1:24:42 PM (18 years ago)
- Location:
- trunk/src/VBox/Devices/Network/slirp
- Files:
-
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/slirp/bootp.c
r1033 r1076 26 26 /* XXX: only DHCP is supported */ 27 27 28 #ifndef VBOX29 #define NB_ADDR 1630 31 #define START_ADDR 1532 33 #define LEASE_TIME (24 * 3600)34 35 typedef struct {36 uint8_t allocated;37 uint8_t macaddr[6];38 } BOOTPClient;39 40 BOOTPClient bootp_clients[NB_ADDR];41 42 const char *bootp_filename;43 #endif /* !VBOX */44 28 45 29 static const uint8_t rfc1533_cookie[] = { RFC1533_COOKIE }; 46 30 47 #ifndef VBOX48 #ifdef DEBUG49 #define dprintf(fmt, args...) \50 if (slirp_debug & DBG_CALL) { fprintf(dfd, fmt, ## args); fflush(dfd); }51 #else52 #define dprintf(fmt, args...)53 #endif54 #else /* VBOX */55 31 DECLINLINE(void) dprintf(const char *pszFormat, ...) 56 32 { … … 62 38 #endif 63 39 } 64 #endif /* VBOX */ 65 66 #ifdef VBOX 40 67 41 static BOOTPClient *get_new_addr(PNATState pData, struct in_addr *paddr) 68 #else /* !VBOX */69 static BOOTPClient *get_new_addr(struct in_addr *paddr)70 #endif /* !VBOX */71 42 { 72 43 BOOTPClient *bc; … … 85 56 } 86 57 87 #ifdef VBOX88 58 static void release_addr(PNATState pData, struct in_addr *paddr) 89 59 { … … 96 66 bootp_clients[i].allocated = 0; 97 67 } 98 #endif /* VBOX */ 99 100 #ifdef VBOX 68 101 69 static BOOTPClient *find_addr(PNATState pData, struct in_addr *paddr, const uint8_t *macaddr) 102 #else /* !VBOX */103 static BOOTPClient *find_addr(struct in_addr *paddr, const uint8_t *macaddr)104 #endif /* !VBOX */105 70 { 106 71 BOOTPClient *bc; … … 160 125 } 161 126 162 #ifdef VBOX163 127 static void bootp_reply(PNATState pData, struct bootp_t *bp) 164 #else /* !VBOX */165 static void bootp_reply(struct bootp_t *bp)166 #endif /* !VBOX */167 128 { 168 129 BOOTPClient *bc; … … 170 131 struct bootp_t *rbp; 171 132 struct sockaddr_in saddr, daddr; 172 #ifdef VBOX173 133 struct in_addr dns_addr_dhcp; 174 #else /* !VBOX */175 struct in_addr dns_addr;176 #endif /* !VBOX */177 134 int dhcp_msg_type, val; 178 135 uint8_t *q; … … 185 142 dhcp_msg_type = DHCPREQUEST; /* Force reply for old BOOTP clients */ 186 143 187 #ifdef VBOX188 144 if (dhcp_msg_type == DHCPRELEASE) { 189 145 uint32_t addr = ntohl(bp->bp_ciaddr.s_addr); … … 195 151 return; 196 152 } 197 #endif /* VBOX */198 153 if (dhcp_msg_type != DHCPDISCOVER && 199 154 dhcp_msg_type != DHCPREQUEST) … … 202 157 memcpy(client_ethaddr, bp->bp_hwaddr, 6); 203 158 204 #ifdef VBOX205 159 if ((m = m_get(pData)) == NULL) 206 #else /* !VBOX */207 if ((m = m_get()) == NULL)208 #endif /* !VBOX */209 160 return; 210 161 m->m_data += if_maxlinkhdr; … … 214 165 215 166 if (dhcp_msg_type == DHCPDISCOVER) { 216 #ifdef VBOX217 167 /* Do not allocate a new lease for clients that forgot that they had a lease. */ 218 168 bc = find_addr(pData, &daddr.sin_addr, bp->bp_hwaddr); 219 if (bc) 220 goto reuse_lease; 221 #endif /* VBOX */ 169 if (!bc) 170 { 222 171 new_addr: 223 #ifdef VBOX 224 bc = get_new_addr(pData, &daddr.sin_addr); 225 #else /* !VBOX */ 226 bc = get_new_addr(&daddr.sin_addr); 227 #endif /* !VBOX */ 228 if (!bc) { 229 #ifdef VBOX 230 LogRel(("NAT: DHCP no IP address left\n")); 231 #endif /* VBOX */ 232 dprintf("no address left\n"); 233 return; 234 } 235 memcpy(bc->macaddr, client_ethaddr, 6); 236 #ifdef VBOX 237 reuse_lease: ; 238 #endif /* VBOX */ 172 bc = get_new_addr(pData, &daddr.sin_addr); 173 if (!bc) { 174 LogRel(("NAT: DHCP no IP address left\n")); 175 dprintf("no address left\n"); 176 return; 177 } 178 memcpy(bc->macaddr, client_ethaddr, 6); 179 } 239 180 } else { 240 #ifdef VBOX241 181 bc = find_addr(pData, &daddr.sin_addr, bp->bp_hwaddr); 242 #else /* !VBOX */243 bc = find_addr(&daddr.sin_addr, bp->bp_hwaddr);244 #endif /* !VBOX */245 182 if (!bc) { 246 183 /* if never assigned, behaves as if it was already … … 251 188 252 189 if (bootp_filename) 253 #ifndef VBOX254 snprintf((char*)rbp->bp_file, sizeof(rbp->bp_file), "%s", bootp_filename);255 #else256 190 RTStrPrintf((char*)rbp->bp_file, sizeof(rbp->bp_file), "%s", bootp_filename); 257 #endif 258 259 #ifdef VBOX 191 260 192 { 261 193 uint32_t addr = ntohl(daddr.sin_addr.s_addr); … … 263 195 addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff)); 264 196 } 265 #endif /* VBOX */266 197 dprintf("offered addr=%08x\n", ntohl(daddr.sin_addr.s_addr)); 267 198 … … 315 246 *q++ = RFC1533_DNS; 316 247 *q++ = 4; 317 #ifdef VBOX318 248 dns_addr_dhcp.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_DNS); 319 249 memcpy(q, &dns_addr_dhcp, 4); 320 #else /* !VBOX */321 dns_addr.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_DNS);322 memcpy(q, &dns_addr, 4);323 #endif /* !VBOX */324 250 q += 4; 325 251 … … 342 268 m->m_len = sizeof(struct bootp_t) - 343 269 sizeof(struct ip) - sizeof(struct udphdr); 344 #ifdef VBOX345 270 /* Reply to the broadcast address, as some clients perform paranoid checks. */ 346 271 daddr.sin_addr.s_addr = INADDR_BROADCAST; 347 272 udp_output2(pData, NULL, m, &saddr, &daddr, IPTOS_LOWDELAY); 348 #else /* !VBOX */ 349 udp_output2(NULL, m, &saddr, &daddr, IPTOS_LOWDELAY); 350 #endif /* !VBOX */ 351 } 352 353 #ifdef VBOX 273 } 274 354 275 void bootp_input(PNATState pData, struct mbuf *m) 355 #else /* !VBOX */356 void bootp_input(struct mbuf *m)357 #endif /* !VBOX */358 276 { 359 277 struct bootp_t *bp = mtod(m, struct bootp_t *); 360 278 361 279 if (bp->bp_op == BOOTP_REQUEST) { 362 #ifdef VBOX363 280 bootp_reply(pData, bp); 364 #else /* !VBOX */ 365 bootp_reply(bp); 366 #endif /* !VBOX */ 367 } 368 } 281 } 282 } -
trunk/src/VBox/Devices/Network/slirp/bootp.h
r1033 r1076 72 72 #define DHCPREQUEST 3 73 73 #define DHCPACK 5 74 #ifdef VBOX75 74 #define DHCPRELEASE 7 76 #endif /* VBOX */77 75 78 76 #define RFC1533_VENDOR_MAJOR 0 … … 114 112 }; 115 113 116 #ifdef VBOX117 114 void bootp_input(PNATState, struct mbuf *m); 118 #else /* !VBOX */119 void bootp_input(struct mbuf *m);120 #endif /* !VBOX */ -
trunk/src/VBox/Devices/Network/slirp/debug.c
r1033 r1076 9 9 #include <slirp.h> 10 10 11 #ifndef VBOX12 FILE *dfd = NULL;13 #ifdef DEBUG14 int dostats = 1;15 #else16 int dostats = 0;17 #endif18 int slirp_debug = 0;19 #endif /* !VBOX */20 21 #ifndef VBOX22 extern char *strerror _P((int));23 #endif24 11 25 12 /* Carry over one item from main.c so that the tty's restored. … … 29 16 30 17 31 #ifndef VBOX32 void33 debug_init(file, dbg)34 char *file;35 int dbg;36 {37 /* Close the old debugging file */38 if (dfd)39 fclose(dfd);40 41 dfd = fopen(file,"w");42 if (dfd != NULL) {43 #if 044 fprintf(dfd,"Slirp %s - Debugging Started.\n", SLIRP_VERSION);45 #endif46 fprintf(dfd,"Debugging Started level %i.\r\n",dbg);47 fflush(dfd);48 slirp_debug = dbg;49 } else {50 lprint("Error: Debugging file \"%s\" could not be opened: %s\r\n",51 file, strerror(errno));52 }53 }54 #endif /* !VBOX */55 56 #ifndef VBOX57 18 /* 58 19 * Dump a packet in the same format as tcpdump -x … … 64 25 int n; 65 26 { 66 #ifndef VBOX67 u_char *pptr = (u_char *)dat;68 int j,k;69 70 n /= 16;71 n++;72 DEBUG_MISC((dfd, "PACKET DUMPED: \n"));73 for(j = 0; j < n; j++) {74 for(k = 0; k < 6; k++)75 DEBUG_MISC((dfd, "%02x ", *pptr++));76 DEBUG_MISC((dfd, "\n"));77 fflush(dfd);78 }79 #else /* VBOX */80 27 Log(("nat: PACKET DUMPED:\n%.*Vhxd\n", n, dat)); 81 #endif /* VBOX */ 82 } 83 #endif 84 #endif /* !VBOX */ 28 } 29 #endif 85 30 86 31 #if 0 … … 143 88 144 89 void 145 #ifdef VBOX146 90 ipstats(PNATState pData) 147 #else /* !VBOX */148 ipstats()149 #endif /* !VBOX */150 91 { 151 92 lprint(" \r\n"); … … 190 131 191 132 void 192 #ifdef VBOX193 133 tcpstats(PNATState pData) 194 #else /* !VBOX */195 tcpstats()196 #endif /* !VBOX */197 134 { 198 135 lprint(" \r\n"); … … 262 199 263 200 void 264 #ifdef VBOX265 201 udpstats(PNATState pData) 266 #else /* !VBOX */267 udpstats()268 #endif /* !VBOX */269 202 { 270 203 lprint(" \r\n"); … … 280 213 281 214 void 282 #ifdef VBOX283 215 icmpstats(PNATState pData) 284 #else /* !VBOX */285 icmpstats()286 #endif /* !VBOX */287 216 { 288 217 lprint(" \r\n"); … … 297 226 298 227 void 299 #ifdef VBOX300 228 mbufstats(PNATState pData) 301 #else /* !VBOX */302 mbufstats()303 #endif /* !VBOX */304 229 { 305 230 struct mbuf *m; … … 325 250 326 251 void 327 #ifdef VBOX328 252 sockstats(PNATState pData) 329 #else /* !VBOX */330 sockstats()331 #endif /* !VBOX */332 253 { 333 254 char buff[256]; -
trunk/src/VBox/Devices/Network/slirp/debug.h
r1033 r1076 9 9 #define PRN_SPRINTF 2 10 10 11 #ifdef VBOX12 11 /* Unused anyway, using VBox Log facility. */ 13 12 #define dfd NULL 14 #else /* !VBOX */15 extern FILE *dfd;16 extern FILE *lfd;17 #endif /* !VBOX */18 13 extern int dostats; 19 14 extern int slirp_debug; … … 23 18 #define DBG_ERROR 0x4 24 19 #define DEBUG_DEFAULT DBG_CALL|DBG_MISC|DBG_ERROR 25 26 #ifndef VBOX27 #ifdef DEBUG28 #define DEBUG_CALL(x) if (slirp_debug & DBG_CALL) { fprintf(dfd, "%s...\n", x); fflush(dfd); }29 #define DEBUG_ARG(x, y) if (slirp_debug & DBG_CALL) { fputc(' ', dfd); fprintf(dfd, x, y); fputc('\n', dfd); fflush(dfd); }30 #define DEBUG_ARGS(x) if (slirp_debug & DBG_CALL) { fprintf x ; fflush(dfd); }31 #define DEBUG_MISC(x) if (slirp_debug & DBG_MISC) { fprintf x ; fflush(dfd); }32 #define DEBUG_ERROR(x) if (slirp_debug & DBG_ERROR) {fprintf x ; fflush(dfd); }33 34 35 #else36 37 #define DEBUG_CALL(x)38 #define DEBUG_ARG(x, y)39 #define DEBUG_ARGS(x)40 #define DEBUG_MISC(x)41 #define DEBUG_ERROR(x)42 43 #endif44 #else /* VBOX */45 20 46 21 #include <VBox/log.h> … … 87 62 #endif /* !LOG_ENABLED */ 88 63 89 #endif /* VBOX */90 91 64 void debug_init _P((char *, int)); 92 65 /*void ttystats _P((struct ttys *)); */ 93 66 void allttystats _P((void)); 94 #ifdef VBOX95 67 void ipstats _P((PNATState)); 96 68 void tcpstats _P((PNATState)); … … 99 71 void mbufstats _P((PNATState)); 100 72 void sockstats _P((PNATState)); 101 #else /* !VBOX */102 void ipstats _P((void));103 void vjstats _P((void));104 void tcpstats _P((void));105 void udpstats _P((void));106 void icmpstats _P((void));107 void mbufstats _P((void));108 void sockstats _P((void));109 #endif /* VBOX */110 #ifndef VBOX111 void slirp_exit _P((int));112 #endif /* VBOX */113 73 -
trunk/src/VBox/Devices/Network/slirp/icmp_var.h
r1033 r1076 42 42 * of the internet control message protocol. 43 43 */ 44 #ifdef VBOX45 44 struct icmpstat_t { 46 #else /* !VBOX */47 struct icmpstat {48 #endif /* !VBOX */49 45 /* statistics related to input messages processed */ 50 46 u_long icps_received; /* #ICMP packets received */ … … 69 65 } 70 66 71 #ifndef VBOX72 extern struct icmpstat icmpstat;73 #endif /* !VBOX */74 75 67 #endif -
trunk/src/VBox/Devices/Network/slirp/if.c
r1048 r1076 8 8 #include <slirp.h> 9 9 10 #ifndef VBOX11 int if_mtu, if_mru;12 int if_comp;13 int if_maxlinkhdr;14 int if_queued = 0; /* Number of packets queued so far */15 int if_thresh = 10; /* Number of packets queued before we start sending16 * (to prevent allocing too many mbufs) */17 18 struct mbuf if_fastq; /* fast queue (for interactive data) */19 struct mbuf if_batchq; /* queue for non-interactive data */20 struct mbuf *next_m; /* Pointer to next mbuf to output */21 #endif /* !VBOX */22 10 23 11 #define ifs_init(ifm) ((ifm)->ifs_next = (ifm)->ifs_prev = (ifm)) 24 12 25 #ifndef VBOX26 void27 ifs_insque(ifm, ifmhead)28 struct mbuf *ifm, *ifmhead;29 #else /* VBOX */30 13 static void ifs_insque(struct mbuf *ifm, struct mbuf *ifmhead) 31 #endif /* VBOX */32 14 { 33 15 ifm->ifs_next = ifmhead->ifs_next; … … 37 19 } 38 20 39 #ifndef VBOX40 void41 ifs_remque(ifm)42 struct mbuf *ifm;43 #else /* VBOX */44 21 static void ifs_remque(struct mbuf *ifm) 45 #endif /* VBOX */46 22 { 47 23 ifm->ifs_prev->ifs_next = ifm->ifs_next; … … 50 26 51 27 void 52 #ifdef VBOX53 28 if_init(PNATState pData) 54 #else /* !VBOX */55 if_init()56 #endif /* !VBOX */57 29 { 58 30 #if 0 … … 70 42 if_maxlinkhdr = 2 + 14 + 40; 71 43 #endif 72 #ifdef VBOX73 44 if_queued = 0; 74 45 if_thresh = 10; 75 #endif /* VBOX */76 46 if_mtu = 1500; 77 47 if_mru = 1500; … … 176 146 */ 177 147 void 178 #ifdef VBOX179 148 if_output(PNATState pData, struct socket *so, struct mbuf *ifm) 180 #else /* !VBOX */181 if_output(so, ifm)182 struct socket *so;183 struct mbuf *ifm;184 #endif /* !VBOX */185 149 { 186 150 struct mbuf *ifq; … … 269 233 if (link_up) { 270 234 /* if_start will check towrite */ 271 #ifdef VBOX272 235 if_start(pData); 273 #else /* !VBOX */274 if_start();275 #endif /* !VBOX */276 236 } 277 237 #endif … … 291 251 */ 292 252 void 293 #ifdef VBOX294 253 if_start(PNATState pData) 295 #else /* !VBOX */296 if_start(void)297 #endif /* !VBOX */298 254 { 299 255 struct mbuf *ifm, *ifqt; … … 306 262 again: 307 263 /* check if we can really output */ 308 #ifdef VBOX309 264 if (!slirp_can_output(pData->pvUser)) 310 #else /* !VBOX */311 if (!slirp_can_output())312 #endif /* !VBOX */313 265 return; 314 266 … … 348 300 349 301 /* Encapsulate the packet for sending */ 350 #ifndef VBOX351 if_encap(ifm->m_data, ifm->m_len);352 #else /* VBOX */353 302 if_encap(pData, (const uint8_t *)ifm->m_data, ifm->m_len); 354 #endif /* VBOX */ 355 356 #ifdef VBOX 303 357 304 m_free(pData, ifm); 358 #else /* !VBOX */359 m_free(ifm);360 #endif /* !VBOX */361 305 362 306 if (if_queued) -
trunk/src/VBox/Devices/Network/slirp/ip.h
r1033 r1076 78 78 */ 79 79 struct ip { 80 #ifdef VBOX81 80 /* 82 81 * bitfield types must be u_int8_t for MSVC, otherwise it will use a full dword (for u_int) 83 82 */ 84 #endif85 83 #ifdef WORDS_BIGENDIAN 86 84 u_int ip_v:4, /* version */ … … 153 151 u_int8_t ipt_len; /* size of structure (variable) */ 154 152 u_int8_t ipt_ptr; /* index of current entry */ 155 #ifdef VBOX156 153 /* 157 154 * bitfield types must be u_int8_t for MSVC, otherwise it will use a full dword (for u_int) 158 155 */ 159 #endif160 156 #ifdef WORDS_BIGENDIAN 161 157 u_int ipt_oflw:4, /* overflow counter */ … … 300 296 */ 301 297 302 #ifdef VBOX303 298 struct ipstat_t { 304 #else /* !VBOX */305 struct ipstat {306 #endif /* !VBOX */307 299 u_long ips_total; /* total packets received */ 308 300 u_long ips_badsum; /* checksum bad */ … … 332 324 }; 333 325 334 #ifndef VBOX 335 extern struct ipstat ipstat; 336 extern struct ipq ipq; /* ip reass. queue */ 337 extern u_int16_t ip_id; /* ip packet ctr, for ids */ 338 extern int ip_defttl; /* default IP ttl */ 339 #endif /* !VBOX */ 340 341 #endif 326 327 #endif -
trunk/src/VBox/Devices/Network/slirp/ip_icmp.c
r1033 r1076 38 38 #include "ip_icmp.h" 39 39 40 #ifndef VBOX41 struct icmpstat icmpstat;42 #endif /* !VBOX */43 40 44 41 /* The message sent when emulating PING */ 45 42 /* Be nice and tell them it's just a psuedo-ping packet */ 46 #ifdef VBOX47 43 static const char icmp_ping_msg[] = "This is a psuedo-PING packet used by Slirp to emulate ICMP ECHO-REQUEST packets.\n"; 48 #else /* !VBOX */49 char icmp_ping_msg[] = "This is a psuedo-PING packet used by Slirp to emulate ICMP ECHO-REQUEST packets.\n";50 #endif /* !VBOX */51 44 52 45 /* list of actions for icmp_error() on RX of an icmp message */ 53 #ifdef VBOX54 46 static const int icmp_flush[19] = { 55 #else /* !VBOX */56 static int icmp_flush[19] = {57 #endif /* !VBOX */58 47 /* ECHO REPLY (0) */ 0, 59 48 1, … … 81 70 */ 82 71 void 83 #ifdef VBOX84 72 icmp_input(PNATState pData, struct mbuf *m, int hlen) 85 #else /* !VBOX */86 icmp_input(m, hlen)87 struct mbuf *m;88 int hlen;89 #endif /* !VBOX */90 73 { 91 74 register struct icmp *icp; … … 107 90 icmpstat.icps_tooshort++; 108 91 freeit: 109 #ifdef VBOX110 92 m_freem(pData, m); 111 #else /* !VBOX */112 m_freem(m);113 #endif /* !VBOX */114 93 goto end_error; 115 94 } … … 134 113 ip->ip_len += hlen; /* since ip_input subtracts this */ 135 114 if (ip->ip_dst.s_addr == alias_addr.s_addr) { 136 #ifdef VBOX137 115 icmp_reflect(pData, m); 138 #else /* !VBOX */139 icmp_reflect(m);140 #endif /* !VBOX */141 116 } else { 142 117 struct socket *so; 143 118 struct sockaddr_in addr; 144 119 if ((so = socreate()) == NULL) goto freeit; 145 #ifdef VBOX146 120 if(udp_attach(pData, so) == -1) { 147 #else /* !VBOX */148 if(udp_attach(so) == -1) {149 #endif /* !VBOX */150 121 DEBUG_MISC((dfd,"icmp_input udp_attach errno = %d-%s\n", 151 122 errno,strerror(errno))); 152 #ifdef VBOX153 123 sofree(pData, so); 154 124 m_free(pData, m); 155 #else /* !VBOX */156 sofree(so);157 m_free(m);158 #endif /* !VBOX */159 125 goto end_error; 160 126 } … … 189 155 DEBUG_MISC((dfd,"icmp_input udp sendto tx errno = %d-%s\n", 190 156 errno,strerror(errno))); 191 #ifdef VBOX192 157 icmp_error(pData, m, ICMP_UNREACH,ICMP_UNREACH_NET, 0,strerror(errno)); 193 158 udp_detach(pData, so); 194 #else /* !VBOX */195 icmp_error(m, ICMP_UNREACH,ICMP_UNREACH_NET, 0,strerror(errno));196 udp_detach(so);197 #endif /* !VBOX */198 159 } 199 160 } /* if ip->ip_dst.s_addr == alias_addr.s_addr */ … … 208 169 case ICMP_REDIRECT: 209 170 icmpstat.icps_notsupp++; 210 #ifdef VBOX211 171 m_freem(pData, m); 212 #else /* !VBOX */213 m_freem(m);214 #endif /* !VBOX */215 172 break; 216 173 217 174 default: 218 175 icmpstat.icps_badtype++; 219 #ifdef VBOX220 176 m_freem(pData, m); 221 #else /* !VBOX */222 m_freem(m);223 #endif /* !VBOX */224 177 } /* swith */ 225 178 … … 249 202 250 203 #define ICMP_MAXDATALEN (IP_MSS-28) 251 #ifndef VBOX252 void253 icmp_error(msrc, type, code, minsize, message)254 struct mbuf *msrc;255 u_char type;256 u_char code;257 int minsize;258 char *message;259 #else /* VBOX */260 204 void icmp_error(PNATState pData, struct mbuf *msrc, u_char type, u_char code, int minsize, char *message) 261 #endif /* VBOX */262 205 { 263 206 unsigned hlen, shlen, s_ip_len; … … 296 239 297 240 /* make a copy */ 298 #ifdef VBOX299 241 if(!(m=m_get(pData))) goto end_error; /* get mbuf */ 300 #else /* !VBOX */301 if(!(m=m_get())) goto end_error; /* get mbuf */302 #endif /* !VBOX */303 242 { int new_m_size; 304 243 new_m_size=sizeof(struct ip )+ICMP_MINLEN+msrc->m_len+ICMP_MAXDATALEN; … … 365 304 ip->ip_src = alias_addr; 366 305 367 #ifdef VBOX368 306 (void ) ip_output(pData, (struct socket *)NULL, m); 369 #else /* !VBOX */370 (void ) ip_output((struct socket *)NULL, m);371 #endif /* !VBOX */372 307 373 308 icmpstat.icps_reflect++; … … 382 317 */ 383 318 void 384 #ifdef VBOX385 319 icmp_reflect(PNATState pData, struct mbuf *m) 386 #else /* !VBOX */387 icmp_reflect(m)388 struct mbuf *m;389 #endif /* !VBOX */390 320 { 391 321 register struct ip *ip = mtod(m, struct ip *); … … 430 360 } 431 361 432 #ifdef VBOX433 362 (void ) ip_output(pData, (struct socket *)NULL, m); 434 #else /* !VBOX */435 (void ) ip_output((struct socket *)NULL, m);436 #endif /* !VBOX */437 363 438 364 icmpstat.icps_reflect++; -
trunk/src/VBox/Devices/Network/slirp/ip_icmp.h
r1033 r1076 158 158 (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) 159 159 160 #ifdef VBOX161 160 void icmp_input _P((PNATState, struct mbuf *, int)); 162 161 void icmp_error _P((PNATState, struct mbuf *, u_char, u_char, int, char *)); 163 162 void icmp_reflect _P((PNATState, struct mbuf *)); 164 #else /* !VBOX */165 void icmp_input _P((struct mbuf *, int));166 void icmp_error _P((struct mbuf *, u_char, u_char, int, char *));167 void icmp_reflect _P((struct mbuf *));168 #endif /* !VBOX */169 163 170 164 #endif -
trunk/src/VBox/Devices/Network/slirp/ip_input.c
r1048 r1076 46 46 #include "ip_icmp.h" 47 47 48 #ifndef VBOX49 int ip_defttl;50 struct ipstat ipstat;51 struct ipq ipq;52 #endif /* !VBOX */53 48 54 49 /* … … 57 52 */ 58 53 void 59 #ifdef VBOX60 54 ip_init(PNATState pData) 61 #else /* !VBOX */62 ip_init()63 #endif /* !VBOX */64 55 { 65 56 ipq.next = ipq.prev = ptr_to_u32(pData, &ipq); 66 #ifdef VBOX67 57 ip_currid = tt.tv_sec & 0xffff; 68 58 udp_init(pData); 69 59 tcp_init(pData); 70 #else /* !VBOX */71 ip_id = tt.tv_sec & 0xffff;72 udp_init();73 tcp_init();74 #endif /* !VBOX */75 #ifndef VBOX76 ip_defttl = IPDEFTTL;77 #endif /* !VBOX */78 60 } 79 61 … … 83 65 */ 84 66 void 85 #ifdef VBOX86 67 ip_input(PNATState pData, struct mbuf *m) 87 #else /* !VBOX */88 ip_input(m)89 struct mbuf *m;90 #endif /* !VBOX */91 68 { 92 69 register struct ip *ip; … … 153 130 /* check ip_ttl for a correct ICMP reply */ 154 131 if(ip->ip_ttl==0 || ip->ip_ttl==1) { 155 #ifdef VBOX156 132 icmp_error(pData, m, ICMP_TIMXCEED,ICMP_TIMXCEED_INTRANS, 0,"ttl"); 157 #else /* !VBOX */158 icmp_error(m, ICMP_TIMXCEED,ICMP_TIMXCEED_INTRANS, 0,"ttl");159 #endif /* !VBOX */160 133 goto bad; 161 134 } … … 216 189 if (((struct ipasfrag *)ip)->ipf_mff & 1 || ip->ip_off) { 217 190 ipstat.ips_fragments++; 218 #ifdef VBOX219 191 ip = ip_reass(pData, (struct ipasfrag *)ip, fp); 220 #else /* !VBOX */221 ip = ip_reass((struct ipasfrag *)ip, fp);222 #endif /* !VBOX */223 192 if (ip == 0) 224 193 return; 225 194 ipstat.ips_reassembled++; 226 #ifdef VBOX227 195 m = dtom(pData, ip); 228 #else /* !VBOX */229 m = dtom(ip);230 #endif /* !VBOX */231 196 } else 232 197 if (fp) 233 #ifdef VBOX234 198 ip_freef(pData, fp); 235 #else /* !VBOX */236 ip_freef(fp);237 #endif /* !VBOX */238 199 239 200 } else … … 246 207 switch (ip->ip_p) { 247 208 case IPPROTO_TCP: 248 #ifdef VBOX249 209 tcp_input(pData, m, hlen, (struct socket *)NULL); 250 #else /* !VBOX */251 tcp_input(m, hlen, (struct socket *)NULL);252 #endif /* !VBOX */253 210 break; 254 211 case IPPROTO_UDP: 255 #ifdef VBOX256 212 udp_input(pData, m, hlen); 257 #else /* !VBOX */258 udp_input(m, hlen);259 #endif /* !VBOX */260 213 break; 261 214 case IPPROTO_ICMP: 262 #ifdef VBOX263 215 icmp_input(pData, m, hlen); 264 #else /* !VBOX */265 icmp_input(m, hlen);266 #endif /* !VBOX */267 216 break; 268 217 default: 269 218 ipstat.ips_noproto++; 270 #ifdef VBOX271 219 m_free(pData, m); 272 #else /* !VBOX */273 m_free(m);274 #endif /* !VBOX */275 220 } 276 221 return; 277 222 bad: 278 #ifdef VBOX279 223 m_freem(pData, m); 280 #else /* !VBOX */281 m_freem(m);282 #endif /* !VBOX */283 224 return; 284 225 } … … 291 232 */ 292 233 struct ip * 293 #ifdef VBOX294 234 ip_reass(PNATState pData, register struct ipasfrag *ip, register struct ipq_t *fp) 295 #else /* !VBOX */ 296 ip_reass(ip, fp) 297 register struct ipasfrag *ip; 298 register struct ipq_t *fp; 299 #endif /* !VBOX */ 300 { 301 #ifdef VBOX 235 { 302 236 register struct mbuf *m = dtom(pData, ip); 303 #else /* !VBOX */304 register struct mbuf *m = dtom(ip);305 #endif /* !VBOX */306 237 register struct ipasfrag *q; 307 238 int hlen = ip->ip_hl << 2; … … 326 257 if (fp == 0) { 327 258 struct mbuf *t; 328 #ifdef VBOX329 259 if ((t = m_get(pData)) == NULL) goto dropfrag; 330 #else /* !VBOX */331 if ((t = m_get()) == NULL) goto dropfrag;332 #endif /* !VBOX */333 260 fp = mtod(t, struct ipq_t *); 334 261 insque_32(pData, fp, &ipq); … … 362 289 if (i >= ip->ip_len) 363 290 goto dropfrag; 364 #ifdef VBOX365 291 m_adj(dtom(pData, ip), i); 366 #else /* !VBOX */367 m_adj(dtom(ip), i);368 #endif /* !VBOX */369 292 ip->ip_off += i; 370 293 ip->ip_len -= i; … … 381 304 q->ip_len -= i; 382 305 q->ip_off += i; 383 #ifdef VBOX384 306 m_adj(dtom(pData, q), i); 385 #else /* !VBOX */386 m_adj(dtom(q), i);387 #endif /* !VBOX */388 307 break; 389 308 } … … 413 332 */ 414 333 q = u32_to_ptr(pData, fp->ipq_next, struct ipasfrag *); 415 #ifdef VBOX416 334 m = dtom(pData, q); 417 #else /* !VBOX */418 m = dtom(q);419 #endif /* !VBOX */420 335 421 336 q = u32_to_ptr(pData, q->ipf_next, struct ipasfrag *); 422 337 while (q != (struct ipasfrag *)fp) { 423 338 struct mbuf *t; 424 #ifdef VBOX425 339 t = dtom(pData, q); 426 #else /* !VBOX */427 t = dtom(q);428 #endif /* !VBOX */429 340 q = u32_to_ptr(pData, q->ipf_next, struct ipasfrag *); 430 #ifdef VBOX431 341 m_cat(pData, m, t); 432 #else /* !VBOX */433 m_cat(m, t);434 #endif /* !VBOX */435 342 } 436 343 … … 464 371 ((struct ip *)ip)->ip_dst = fp->ipq_dst; 465 372 remque_32(pData, fp); 466 #ifdef VBOX467 373 (void) m_free(pData, dtom(pData, fp)); 468 374 m = dtom(pData, ip); 469 #else /* !VBOX */470 (void) m_free(dtom(fp));471 m = dtom(ip);472 #endif /* !VBOX */473 375 m->m_len += (ip->ip_hl << 2); 474 376 m->m_data -= (ip->ip_hl << 2); … … 478 380 dropfrag: 479 381 ipstat.ips_fragdropped++; 480 #ifdef VBOX481 382 m_freem(pData, m); 482 #else /* !VBOX */483 m_freem(m);484 #endif /* !VBOX */485 383 return (0); 486 384 } … … 491 389 */ 492 390 void 493 #ifdef VBOX494 391 ip_freef(PNATState pData, struct ipq_t *fp) 495 #else /* !VBOX */496 ip_freef(fp)497 struct ipq_t *fp;498 #endif /* !VBOX */499 392 { 500 393 register struct ipasfrag *q, *p; … … 504 397 p = u32_to_ptr(pData, q->ipf_next, struct ipasfrag *); 505 398 ip_deq(pData, q); 506 #ifdef VBOX507 399 m_freem(pData, dtom(pData, q)); 508 #else /* !VBOX */509 m_freem(dtom(q));510 #endif /* !VBOX */511 400 } 512 401 remque_32(pData, fp); 513 #ifdef VBOX514 402 (void) m_free(pData, dtom(pData, fp)); 515 #else /* !VBOX */516 (void) m_free(dtom(fp));517 #endif /* !VBOX */518 403 } 519 404 … … 552 437 */ 553 438 void 554 #ifdef VBOX555 439 ip_slowtimo(PNATState pData) 556 #else /* !VBOX */557 ip_slowtimo()558 #endif /* !VBOX */559 440 { 560 441 register struct ipq_t *fp; -
trunk/src/VBox/Devices/Network/slirp/ip_output.c
r1033 r1076 45 45 #include <slirp.h> 46 46 47 #ifndef VBOX48 u_int16_t ip_id;49 #endif /* !VBOX */50 47 51 48 /* … … 56 53 */ 57 54 int 58 #ifdef VBOX59 55 ip_output(PNATState pData, struct socket *so, struct mbuf *m0) 60 #else /* !VBOX */61 ip_output(so, m0)62 struct socket *so;63 struct mbuf *m0;64 #endif /* !VBOX */65 56 { 66 57 register struct ip *ip; … … 85 76 ip->ip_v = IPVERSION; 86 77 ip->ip_off &= IP_DF; 87 #ifdef VBOX88 78 ip->ip_id = htons(ip_currid++); 89 #else /* !VBOX */90 ip->ip_id = htons(ip_id++);91 #endif /* !VBOX */92 79 ip->ip_hl = hlen >> 2; 93 80 ipstat.ips_localout++; … … 113 100 ip->ip_sum = cksum(m, hlen); 114 101 115 #ifdef VBOX116 102 if_output(pData, so, m); 117 #else /* !VBOX */118 if_output(so, m);119 #endif /* !VBOX */120 103 goto done; 121 104 } … … 149 132 for (off = hlen + len; off < (u_int16_t)ip->ip_len; off += len) { 150 133 register struct ip *mhip; 151 #ifdef VBOX152 134 m = m_get(pData); 153 #else /* !VBOX */154 m = m_get();155 #endif /* !VBOX */156 135 if (m == 0) { 157 136 error = -1; … … 206 185 m->m_nextpkt = 0; 207 186 if (error == 0) 208 #ifdef VBOX209 187 if_output(pData, so, m); 210 #else /* !VBOX */211 if_output(so, m);212 #endif /* !VBOX */213 188 else 214 #ifdef VBOX215 189 m_freem(pData, m); 216 #else /* !VBOX */217 m_freem(m);218 #endif /* !VBOX */219 190 } 220 191 … … 227 198 228 199 bad: 229 #ifdef VBOX230 200 m_freem(pData, m0); 231 #else /* !VBOX */232 m_freem(m0);233 #endif /* !VBOX */234 201 goto done; 235 202 } -
trunk/src/VBox/Devices/Network/slirp/libslirp.h
r1039 r1076 4 4 #ifdef _WIN32 5 5 #include <winsock2.h> 6 #if defined(VBOX) && defined(__cplusplus)6 #ifdef __cplusplus 7 7 extern "C" { 8 8 #endif 9 9 int inet_aton(const char *cp, struct in_addr *ia); 10 #if defined(VBOX) && defined(__cplusplus)10 #ifdef __cplusplus 11 11 } 12 12 #endif 13 13 #else 14 #if defined(VBOX) && defined(__OS2__)/* temporary workaround, see ticket #127 */14 #ifdef __OS2__ /* temporary workaround, see ticket #127 */ 15 15 # include <sys/time.h> 16 16 #endif … … 19 19 #endif 20 20 21 #ifdef VBOX22 21 #include <VBox/types.h> 23 22 24 23 typedef struct NATState *PNATState; 25 #endif /* VBOX */26 24 27 25 #ifdef __cplusplus … … 29 27 #endif 30 28 31 #ifndef VBOX32 void slirp_init(void);33 #else /* VBOX */34 29 int slirp_init(PNATState *, const char *, void *); 35 30 void slirp_term(PNATState); 36 31 void slirp_link_up(PNATState); 37 32 void slirp_link_down(PNATState); 38 #endif /* VBOX */39 33 40 #ifdef VBOX41 34 void slirp_select_fill(PNATState pData, int *pnfds, 42 35 fd_set *readfds, fd_set *writefds, fd_set *xfds); … … 45 38 46 39 void slirp_input(PNATState pData, const uint8_t *pkt, int pkt_len); 47 #else /* !VBOX */48 void slirp_select_fill(int *pnfds,49 fd_set *readfds, fd_set *writefds, fd_set *xfds);50 40 51 void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds);52 53 void slirp_input(const uint8_t *pkt, int pkt_len);54 #endif /* !VBOX */55 56 #ifdef VBOX57 41 /* you must provide the following functions: */ 58 42 int slirp_can_output(void * pvUser); … … 63 47 int slirp_add_exec(PNATState pData, int do_pty, const char *args, int addr_low_byte, 64 48 int guest_port); 65 #else /* !VBOX */66 /* you must provide the following functions: */67 int slirp_can_output(void);68 void slirp_output(const uint8_t *pkt, int pkt_len);69 49 70 int slirp_redir(int is_udp, int host_port,71 struct in_addr guest_addr, int guest_port);72 int slirp_add_exec(int do_pty, const char *args, int addr_low_byte,73 int guest_port);74 #endif /* !VBOX */75 76 #ifndef VBOX77 extern const char *tftp_prefix;78 extern char slirp_hostname[33];79 #endif /* !VBOX */80 50 81 51 #ifdef __cplusplus -
trunk/src/VBox/Devices/Network/slirp/main.h
r1033 r1076 12 12 #define TOWRITEMAX 512 13 13 14 #ifndef VBOX15 extern struct timeval tt;16 extern int link_up;17 extern int slirp_socket;18 extern int slirp_socket_unit;19 extern int slirp_socket_port;20 extern u_int32_t slirp_socket_addr;21 extern char *slirp_socket_passwd;22 extern int ctty_closed;23 #endif /* !VBOX */24 14 25 15 /* … … 31 21 #define TIME_DIFF(x,y) (x)-(y) < 0 ? ~0-(y)+(x) : (x)-(y) 32 22 33 #ifndef VBOX34 extern char *slirp_tty;35 extern char *exec_shell;36 extern u_int curtime;37 extern fd_set *global_readfds, *global_writefds, *global_xfds;38 extern struct in_addr ctl_addr;39 extern struct in_addr special_addr;40 extern struct in_addr alias_addr;41 extern struct in_addr our_addr;42 extern struct in_addr loopback_addr;43 extern struct in_addr dns_addr;44 extern char *username;45 extern char *socket_path;46 extern int towrite_max;47 extern int ppp_exit;48 extern int so_options;49 extern int tcp_keepintvl;50 extern uint8_t client_ethaddr[6];51 #endif /* !VBOX */52 23 53 24 #define PROTO_SLIP 0x1 … … 56 27 #endif 57 28 58 #ifdef VBOX59 29 void if_encap(PNATState pData, const uint8_t *ip_data, int ip_data_len); 60 #else /* !VBOX */61 void if_encap(const uint8_t *ip_data, int ip_data_len);62 #endif /* !VBOX */ -
trunk/src/VBox/Devices/Network/slirp/mbuf.c
r1048 r1076 18 18 #include <slirp.h> 19 19 20 #ifndef VBOX 21 struct mbuf *mbutl; 22 char *mclrefcnt; 23 int mbuf_alloced = 0; 24 struct mbuf m_freelist, m_usedlist; 25 int mbuf_thresh = 30; 26 int mbuf_max = 0; 27 int msize; 28 #endif /* !VBOX */ 29 30 void 31 #ifdef VBOX 20 21 void 32 22 m_init(PNATState pData) 33 #else /* !VBOX */34 m_init()35 #endif /* !VBOX */36 23 { 37 24 m_freelist.m_next = m_freelist.m_prev = &m_freelist; 38 25 m_usedlist.m_next = m_usedlist.m_prev = &m_usedlist; 39 #ifdef VBOX40 26 mbuf_alloced = 0; 41 27 msize_init(pData); 42 #else /* !VBOX */ 43 msize_init(); 44 #endif /* !VBOX */ 45 } 46 47 void 48 #ifdef VBOX 28 } 29 30 void 49 31 msize_init(PNATState pData) 50 #else /* !VBOX */51 msize_init()52 #endif /* !VBOX */53 32 { 54 33 /* … … 69 48 */ 70 49 struct mbuf * 71 #ifdef VBOX72 50 m_get(PNATState pData) 73 #else /* !VBOX */74 m_get()75 #endif /* !VBOX */76 51 { 77 52 register struct mbuf *m; … … 109 84 110 85 void 111 #ifdef VBOX112 86 m_free(PNATState pData, struct mbuf *m) 113 #else /* !VBOX */114 m_free(m)115 struct mbuf *m;116 #endif /* !VBOX */117 87 { 118 88 … … 149 119 */ 150 120 void 151 #ifdef VBOX152 121 m_cat(PNATState pData, register struct mbuf *m, register struct mbuf *n) 153 #else /* !VBOX */154 m_cat(m, n)155 register struct mbuf *m, *n;156 #endif /* !VBOX */157 122 { 158 123 /* … … 165 130 m->m_len += n->m_len; 166 131 167 #ifdef VBOX168 132 m_free(pData, n); 169 #else /* !VBOX */170 m_free(n);171 #endif /* !VBOX */172 133 } 173 134 … … 253 214 */ 254 215 struct mbuf * 255 #ifdef VBOX256 216 dtom(PNATState pData, void *dat) 257 #else /* !VBOX */258 dtom(dat)259 void *dat;260 #endif /* !VBOX */261 217 { 262 218 struct mbuf *m; -
trunk/src/VBox/Devices/Network/slirp/mbuf.h
r1033 r1076 135 135 extern int mbuf_max; 136 136 137 #ifdef VBOX138 137 void m_init _P((PNATState)); 139 138 void msize_init _P((PNATState)); … … 141 140 void m_free _P((PNATState, struct mbuf *)); 142 141 void m_cat _P((PNATState, register struct mbuf *, register struct mbuf *)); 143 #else /* !VBOX */144 void m_init _P((void));145 void msize_init _P((void));146 struct mbuf * m_get _P((void));147 void m_free _P((struct mbuf *));148 void m_cat _P((register struct mbuf *, register struct mbuf *));149 #endif /* !VBOX */150 142 void m_inc _P((struct mbuf *, int)); 151 143 void m_adj _P((struct mbuf *, int)); 152 144 int m_copy _P((struct mbuf *, struct mbuf *, int, int)); 153 #ifdef VBOX154 145 struct mbuf * dtom _P((PNATState, void *)); 155 #else /* !VBOX */156 struct mbuf * dtom _P((void *));157 #endif /* !VBOX */158 146 159 147 #endif -
trunk/src/VBox/Devices/Network/slirp/misc.c
r1050 r1076 9 9 #include <slirp.h> 10 10 11 #ifndef VBOX12 u_int curtime, time_fasttimo, last_slowtimo, detach_time;13 u_int detach_wait = 600000; /* 10 minutes */14 #endif /* !VBOX */15 11 16 12 #if 0 … … 88 84 */ 89 85 void 90 #ifdef VBOX91 86 getouraddr(PNATState pData) 92 #else /* !VBOX */93 getouraddr()94 #endif /* !VBOX */95 87 { 96 88 char buff[256]; … … 151 143 }; 152 144 153 #if defined(VBOX) && defined(_MSC_VER)145 #ifdef _MSC_VER 154 146 void 155 147 #else … … 167 159 } 168 160 169 #if defined(VBOX) && defined(_MSC_VER)161 #ifdef _MSC_VER 170 162 void 171 163 #else … … 235 227 236 228 int 237 #ifdef VBOX238 229 fork_exec(PNATState pData, struct socket *so, char *ex, int do_pty) 239 #else /* !VBOX */240 fork_exec(so, ex, do_pty)241 struct socket *so;242 char *ex;243 int do_pty;244 #endif /* !VBOX */245 230 { 246 231 /* not implemented */ … … 249 234 250 235 #else 251 252 #ifndef VBOX253 int254 slirp_openpty(amaster, aslave)255 int *amaster, *aslave;256 {257 register int master, slave;258 259 #ifdef HAVE_GRANTPT260 char *ptr;261 262 if ((master = open("/dev/ptmx", O_RDWR)) < 0 ||263 grantpt(master) < 0 ||264 unlockpt(master) < 0 ||265 (ptr = ptsname(master)) == NULL) {266 close(master);267 return -1;268 }269 270 if ((slave = open(ptr, O_RDWR)) < 0 ||271 ioctl(slave, I_PUSH, "ptem") < 0 ||272 ioctl(slave, I_PUSH, "ldterm") < 0 ||273 ioctl(slave, I_PUSH, "ttcompat") < 0) {274 close(master);275 close(slave);276 return -1;277 }278 279 *amaster = master;280 *aslave = slave;281 return 0;282 283 #else284 285 static char line[] = "/dev/ptyXX";286 register const char *cp1, *cp2;287 288 for (cp1 = "pqrsPQRS"; *cp1; cp1++) {289 line[8] = *cp1;290 for (cp2 = "0123456789abcdefghijklmnopqrstuv"; *cp2; cp2++) {291 line[9] = *cp2;292 if ((master = open(line, O_RDWR, 0)) == -1) {293 if (errno == ENOENT)294 return (-1); /* out of ptys */295 } else {296 line[5] = 't';297 /* These will fail */298 (void) chown(line, getuid(), 0);299 (void) chmod(line, S_IRUSR|S_IWUSR|S_IWGRP);300 #ifdef HAVE_REVOKE301 (void) revoke(line);302 #endif303 if ((slave = open(line, O_RDWR, 0)) != -1) {304 *amaster = master;305 *aslave = slave;306 return 0;307 }308 (void) close(master);309 line[5] = 'p';310 }311 }312 }313 errno = ENOENT; /* out of ptys */314 return (-1);315 #endif316 }317 #endif /* !VBOX */318 236 319 237 /* … … 329 247 */ 330 248 int 331 #ifdef VBOX332 249 fork_exec(PNATState pData, struct socket *so, char *ex, int do_pty) 333 #else /* !VBOX */334 fork_exec(so, ex, do_pty)335 struct socket *so;336 char *ex;337 int do_pty;338 #endif /* !VBOX */339 250 { 340 251 int s; 341 252 struct sockaddr_in addr; 342 #ifndef VBOX343 int addrlen = sizeof(addr);344 #else /* VBOX */345 253 socklen_t addrlen = sizeof(addr); 346 #endif /* VBOX */347 254 int opt; 348 255 int master; … … 362 269 363 270 if (do_pty == 2) { 364 #ifdef VBOX365 271 AssertRelease(do_pty != 2); 366 272 /* shut up gcc */ 367 273 s = 0; 368 274 master = 0; 369 #else /* !VBOX */370 if (slirp_openpty(&master, &s) == -1) {371 lprint("Error: openpty failed: %s\n", strerror(errno));372 return 0;373 }374 #endif /* !VBOX */375 275 } else { 376 276 addr.sin_family = AF_INET; … … 492 392 /* Append the telnet options now */ 493 393 if (so->so_m != 0 && do_pty == 1) { 494 #ifdef VBOX495 394 sbappend(pData, so, so->so_m); 496 #else /* !VBOX */497 sbappend(so, so->so_m);498 #endif /* !VBOX */499 395 so->so_m = 0; 500 396 } … … 649 545 #endif 650 546 651 #ifndef VBOX652 int (*lprint_print) _P((void *, const char *, va_list));653 char *lprint_ptr, *lprint_ptr2, **lprint_arg;654 655 void656 #ifdef __STDC__657 lprint(const char *format, ...)658 #else659 lprint(va_alist) va_dcl660 #endif661 {662 va_list args;663 664 #ifdef __STDC__665 va_start(args, format);666 #else667 char *format;668 va_start(args);669 format = va_arg(args, char *);670 #endif671 #if 0672 /* If we're printing to an sbuf, make sure there's enough room */673 /* XXX +100? */674 if (lprint_sb) {675 if ((lprint_ptr - lprint_sb->sb_wptr) >=676 (lprint_sb->sb_datalen - (strlen(format) + 100))) {677 int deltaw = lprint_sb->sb_wptr - lprint_sb->sb_data;678 int deltar = lprint_sb->sb_rptr - lprint_sb->sb_data;679 int deltap = lprint_ptr - lprint_sb->sb_data;680 681 lprint_sb->sb_data = (char *)realloc(lprint_sb->sb_data,682 lprint_sb->sb_datalen + TCP_SNDSPACE);683 684 /* Adjust all values */685 lprint_sb->sb_wptr = lprint_sb->sb_data + deltaw;686 lprint_sb->sb_rptr = lprint_sb->sb_data + deltar;687 lprint_ptr = lprint_sb->sb_data + deltap;688 689 lprint_sb->sb_datalen += TCP_SNDSPACE;690 }691 }692 #endif693 if (lprint_print)694 lprint_ptr += (*lprint_print)(*lprint_arg, format, args);695 696 /* Check if they want output to be logged to file as well */697 if (lfd) {698 /*699 * Remove \r's700 * otherwise you'll get ^M all over the file701 */702 int len = strlen(format);703 char *bptr1, *bptr2;704 705 bptr1 = bptr2 = strdup(format);706 707 while (len--) {708 if (*bptr1 == '\r')709 memcpy(bptr1, bptr1+1, len+1);710 else711 bptr1++;712 }713 vfprintf(lfd, bptr2, args);714 free(bptr2);715 }716 va_end(args);717 }718 719 void720 add_emu(buff)721 char *buff;722 {723 u_int lport, fport;724 u_int8_t tos = 0, emu = 0;725 char buff1[256], buff2[256], buff4[128];726 char *buff3 = buff4;727 struct emu_t *emup;728 struct socket *so;729 730 if (sscanf(buff, "%256s %256s", buff2, buff1) != 2) {731 lprint("Error: Bad arguments\r\n");732 return;733 }734 735 if (sscanf(buff1, "%d:%d", &lport, &fport) != 2) {736 lport = 0;737 if (sscanf(buff1, "%d", &fport) != 1) {738 lprint("Error: Bad first argument\r\n");739 return;740 }741 }742 743 if (sscanf(buff2, "%128[^:]:%128s", buff1, buff3) != 2) {744 buff3 = 0;745 if (sscanf(buff2, "%256s", buff1) != 1) {746 lprint("Error: Bad second argument\r\n");747 return;748 }749 }750 751 if (buff3) {752 if (strcmp(buff3, "lowdelay") == 0)753 tos = IPTOS_LOWDELAY;754 else if (strcmp(buff3, "throughput") == 0)755 tos = IPTOS_THROUGHPUT;756 else {757 lprint("Error: Expecting \"lowdelay\"/\"throughput\"\r\n");758 return;759 }760 }761 762 if (strcmp(buff1, "ftp") == 0)763 emu = EMU_FTP;764 else if (strcmp(buff1, "irc") == 0)765 emu = EMU_IRC;766 else if (strcmp(buff1, "none") == 0)767 emu = EMU_NONE; /* ie: no emulation */768 else {769 lprint("Error: Unknown service\r\n");770 return;771 }772 773 /* First, check that it isn't already emulated */774 for (emup = tcpemu; emup; emup = emup->next) {775 if (emup->lport == lport && emup->fport == fport) {776 lprint("Error: port already emulated\r\n");777 return;778 }779 }780 781 /* link it */782 emup = (struct emu_t *)malloc(sizeof (struct emu_t));783 emup->lport = (u_int16_t)lport;784 emup->fport = (u_int16_t)fport;785 emup->tos = tos;786 emup->emu = emu;787 emup->next = tcpemu;788 tcpemu = emup;789 790 /* And finally, mark all current sessions, if any, as being emulated */791 for (so = tcb.so_next; so != &tcb; so = so->so_next) {792 if ((lport && lport == ntohs(so->so_lport)) ||793 (fport && fport == ntohs(so->so_fport))) {794 if (emu)795 so->so_emu = emu;796 if (tos)797 so->so_iptos = tos;798 }799 }800 801 lprint("Adding emulation for %s to port %d/%d\r\n", buff1, emup->lport, emup->fport);802 }803 #endif /* !VBOX */804 805 547 #ifdef BAD_SPRINTF 806 548 -
trunk/src/VBox/Devices/Network/slirp/misc.h
r1048 r1076 18 18 19 19 extern struct ex_list *exec_list; 20 #ifndef VBOX21 extern u_int curtime, time_fasttimo, last_slowtimo, detach_time, detach_wait;22 #endif /* !VBOX */23 24 #ifndef VBOX25 extern int (*lprint_print) _P((void *, const char *, va_list));26 extern char *lprint_ptr, *lprint_ptr2, **lprint_arg;27 extern struct sbuf *lprint_sb;28 #endif /* !VBOX */29 20 30 21 #ifndef HAVE_STRDUP … … 74 65 int show_x _P((char *, struct socket *)); 75 66 void redir_x _P((u_int32_t, int, int, int)); 76 #ifdef VBOX77 67 void getouraddr _P((PNATState)); 78 #else /* !VBOX */79 void getouraddr _P((void));80 #endif /* !VBOX */81 68 inline void slirp_insque _P((PNATState, void *, void *)); 82 69 inline void slirp_remque _P((PNATState, void *)); 83 70 int add_exec _P((struct ex_list **, int, char *, int, int)); 84 71 int slirp_openpty _P((int *, int *)); 85 #ifdef VBOX86 72 int fork_exec _P((PNATState, struct socket *, char *, int)); 87 #else /* !VBOX */88 int fork_exec _P((struct socket *, char *, int));89 #endif /* !VBOX */90 73 void snooze_hup _P((int)); 91 74 void snooze _P((void)); … … 97 80 int rsh_exec _P((struct socket *, struct socket *, char *, char *, char *)); 98 81 99 #if defined(VBOX) && defined(_MSC_VER)82 #ifdef _MSC_VER 100 83 void insque(void *a, void *b); 101 84 void remque(void *a); -
trunk/src/VBox/Devices/Network/slirp/sbuf.c
r1033 r1076 73 73 */ 74 74 void 75 #ifdef VBOX76 75 sbappend(PNATState pData, struct socket *so, struct mbuf *m) 77 #else /* !VBOX */78 sbappend(so, m)79 struct socket *so;80 struct mbuf *m;81 #endif /* !VBOX */82 76 { 83 77 int ret = 0; … … 90 84 /* Shouldn't happen, but... e.g. foreign host closes connection */ 91 85 if (m->m_len <= 0) { 92 #ifdef VBOX93 86 m_free(pData, m); 94 #else /* !VBOX */95 m_free(m);96 #endif /* !VBOX */97 87 return; 98 88 } … … 105 95 if (so->so_urgc) { 106 96 sbappendsb(&so->so_rcv, m); 107 #ifdef VBOX108 97 m_free(pData, m); 109 #else /* !VBOX */110 m_free(m);111 #endif /* !VBOX */112 98 sosendoob(so); 113 99 return; … … 139 125 } /* else */ 140 126 /* Whatever happened, we free the mbuf */ 141 #ifdef VBOX142 127 m_free(pData, m); 143 #else /* !VBOX */144 m_free(m);145 #endif /* !VBOX */146 128 } 147 129 -
trunk/src/VBox/Devices/Network/slirp/sbuf.h
r1033 r1076 25 25 void sbdrop _P((struct sbuf *, int)); 26 26 void sbreserve _P((struct sbuf *, int)); 27 #ifdef VBOX28 27 void sbappend _P((PNATState, struct socket *, struct mbuf *)); 29 #else /* !VBOX */30 void sbappend _P((struct socket *, struct mbuf *));31 #endif /* !VBOX */32 28 void sbappendsb _P((struct sbuf *, struct mbuf *)); 33 29 void sbcopy _P((struct sbuf *, int, int, char *)); -
trunk/src/VBox/Devices/Network/slirp/slirp.c
r1039 r1076 3 3 # include <paths.h> 4 4 #endif 5 #ifdef VBOX 6 # include <VBox/err.h> 7 # include <iprt/assert.h> 8 #endif 9 10 #ifndef VBOX 11 /* host address */ 12 struct in_addr our_addr; 13 /* host dns address */ 14 struct in_addr dns_addr; 15 /* host loopback address */ 16 struct in_addr loopback_addr; 17 18 /* address for slirp virtual addresses */ 19 struct in_addr special_addr; 20 /* virtual address alias for host */ 21 struct in_addr alias_addr; 22 #endif /* !VBOX */ 23 24 #ifdef VBOX 5 6 #include <VBox/err.h> 7 #include <iprt/assert.h> 8 25 9 static const uint8_t special_ethaddr[6] = { 26 #else /* !VBOX */27 const uint8_t special_ethaddr[6] = {28 #endif /* !VBOX */29 10 0x52, 0x54, 0x00, 0x12, 0x35, 0x00 30 11 }; 31 12 32 #ifndef VBOX33 uint8_t client_ethaddr[6];34 35 int do_slowtimo;36 int link_up;37 struct timeval tt;38 FILE *lfd;39 struct ex_list *exec_list;40 #endif /* !VBOX */41 42 #ifndef VBOX43 /* XXX: suppress those select globals */44 fd_set *global_readfds, *global_writefds, *global_xfds;45 46 char slirp_hostname[33];47 #endif /* !VBOX */48 49 13 #ifdef _WIN32 50 14 51 #ifdef VBOX52 15 static int get_dns_addr(PNATState pData, struct in_addr *pdns_addr) 53 #else /* !VBOX */54 static int get_dns_addr(struct in_addr *pdns_addr)55 #endif /* !VBOX */56 16 { 57 17 FIXED_INFO *FixedInfo=NULL; … … 73 33 74 34 if ((ret = GetNetworkParams(FixedInfo, &BufLen)) != ERROR_SUCCESS) { 75 #ifndef VBOX76 printf("GetNetworkParams failed. ret = %08x\n", (u_int)ret );77 #else /* VBOX */78 35 Log(("GetNetworkParams failed. ret = %08x\n", (u_int)ret )); 79 #endif /* VBOX */80 36 if (FixedInfo) { 81 37 GlobalFree(FixedInfo); … … 88 44 inet_aton(pIPAddr->IpAddress.String, &tmp_addr); 89 45 *pdns_addr = tmp_addr; 90 #ifndef VBOX91 #if 092 printf( "DNS Servers:\n" );93 printf( "DNS Addr:%s\n", pIPAddr->IpAddress.String );94 95 pIPAddr = FixedInfo -> DnsServerList.Next;96 while ( pIPAddr ) {97 printf( "DNS Addr:%s\n", pIPAddr ->IpAddress.String );98 pIPAddr = pIPAddr ->Next;99 }100 #endif101 #else /* VBOX */102 46 Log(("nat: DNS Servers:\n")); 103 47 Log(("nat: DNS Addr:%s\n", pIPAddr->IpAddress.String)); … … 108 52 pIPAddr = pIPAddr ->Next; 109 53 } 110 #endif /* VBOX */111 54 if (FixedInfo) { 112 55 GlobalFree(FixedInfo); … … 118 61 #else 119 62 120 #ifdef VBOX121 63 static int get_dns_addr(PNATState pData, struct in_addr *pdns_addr) 122 #else /* !VBOX */123 static int get_dns_addr(struct in_addr *pdns_addr)124 #endif /* !VBOX */125 64 { 126 65 char buff[512]; … … 153 92 return -1; 154 93 155 #ifndef VBOX156 lprint("IP address of your DNS(s): ");157 #else /* VBOX */158 94 Log(("nat: IP address of your DNS(s): \n")); 159 #endif /* VBOX */160 95 while (fgets(buff, 512, f) != NULL) { 161 96 if (sscanf(buff, "nameserver%*[ \t]%256s", buff2) == 1) { … … 167 102 if (!found) 168 103 *pdns_addr = tmp_addr; 169 #ifndef VBOX170 else171 lprint(", ");172 #endif /* !VBOX */173 104 if (++found > 3) { 174 #ifndef VBOX175 lprint("(more)");176 #else /* VBOX */177 105 Log(("nat: (more)\n")); 178 #endif /* VBOX */179 106 break; 180 107 } else 181 #ifndef VBOX182 lprint("%s", inet_ntoa(tmp_addr));183 #else /* VBOX */184 108 Log(("nat: %s\n", inet_ntoa(tmp_addr))); 185 #endif /* VBOX */186 109 } 187 110 } … … 194 117 #endif 195 118 196 #ifndef VBOX197 #ifdef _WIN32198 void slirp_cleanup(void)199 {200 WSACleanup();201 }202 #endif203 #endif /* !VBOX (see slirp_term) */204 205 #ifndef VBOX206 void slirp_init(void)207 {208 /* debug_init("/tmp/slirp.log", DEBUG_DEFAULT); */209 #else /* VBOX */210 /** Number of slirp users. Used for making sure init and term are only executed once. */211 119 int slirp_init(PNATState *ppData, const char *pszNetAddr, void *pvUser) 212 120 { … … 220 128 pData->cpvHashUsed = 1; 221 129 #endif 222 #endif /* VBOX */223 130 224 131 #ifdef _WIN32 … … 226 133 WSADATA Data; 227 134 WSAStartup(MAKEWORD(2,0), &Data); 228 #ifndef VBOX 229 atexit(slirp_cleanup); 230 #endif /* !VBOX */ 231 } 232 #endif 233 234 #ifdef VBOX 135 } 136 #endif 137 235 138 Assert(sizeof(struct ip) == 20); 236 #endif /* VBOX */237 139 link_up = 1; 238 140 239 #ifdef VBOX240 141 if_init(pData); 241 142 ip_init(pData); 242 #else /* !VBOX */243 if_init();244 ip_init();245 #endif /* !VBOX */246 143 247 144 /* Initialise mbufs *after* setting the MTU */ 248 #ifdef VBOX249 145 m_init(pData); 250 #else /* !VBOX */251 m_init();252 #endif /* !VBOX */253 146 254 147 /* set default addresses */ 255 148 inet_aton("127.0.0.1", &loopback_addr); 256 149 257 #ifdef VBOX258 150 if (get_dns_addr(pData, &dns_addr) < 0) { 259 #else /* !VBOX */260 if (get_dns_addr(&dns_addr) < 0) {261 #endif /* !VBOX */262 #ifndef VBOX263 dns_addr = loopback_addr;264 fprintf (stderr, "Warning: No DNS servers found\n");265 #else266 151 return VERR_NAT_DNS; 267 #endif 268 } 269 270 #ifdef VBOX 152 } 153 271 154 inet_aton(pszNetAddr, &special_addr); 272 #else /* !VBOX */273 inet_aton(CTL_SPECIAL, &special_addr);274 #endif /* !VBOX */275 155 alias_addr.s_addr = special_addr.s_addr | htonl(CTL_ALIAS); 276 #ifdef VBOX277 156 getouraddr(pData); 278 157 return VINF_SUCCESS; 279 #else /* !VBOX */ 280 getouraddr(); 281 #endif /* !VBOX */ 282 } 283 284 #ifdef VBOX 158 } 159 285 160 /** 286 161 * Marks the link as up, making it possible to establish new connections. … … 343 218 free(pData); 344 219 } 345 #endif /* VBOX */346 220 347 221 … … 354 228 */ 355 229 #ifdef _WIN32 356 #ifdef VBOX357 230 static void updtime(PNATState pData) 358 #else /* !VBOX */359 static void updtime(void)360 #endif /* !VBOX */361 231 { 362 232 struct _timeb tb; … … 367 237 } 368 238 #else 369 #ifdef VBOX370 239 static void updtime(PNATState pData) 371 #else /* !VBOX */372 static void updtime(void)373 #endif /* !VBOX */374 240 { 375 241 gettimeofday(&tt, 0); … … 383 249 #endif 384 250 385 #ifdef VBOX386 251 void slirp_select_fill(PNATState pData, int *pnfds, 387 252 fd_set *readfds, fd_set *writefds, fd_set *xfds) 388 #else /* !VBOX */389 void slirp_select_fill(int *pnfds,390 fd_set *readfds, fd_set *writefds, fd_set *xfds)391 #endif /* !VBOX */392 253 { 393 254 struct socket *so, *so_next; … … 395 256 int nfds; 396 257 int tmp_time; 397 398 #ifndef VBOX399 /* fail safe */400 global_readfds = NULL;401 global_writefds = NULL;402 global_xfds = NULL;403 #endif /* !VBOX */404 258 405 259 nfds = *pnfds; … … 481 335 if (so->so_expire) { 482 336 if (so->so_expire <= curtime) { 483 #ifdef VBOX484 337 udp_detach(pData, so); 485 #else /* !VBOX */486 udp_detach(so);487 #endif /* !VBOX */488 338 continue; 489 339 } else … … 544 394 } 545 395 546 #ifdef VBOX547 396 void slirp_select_poll(PNATState pData, fd_set *readfds, fd_set *writefds, fd_set *xfds) 548 #else /* !VBOX */549 void slirp_select_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds)550 #endif /* !VBOX */551 397 { 552 398 struct socket *so, *so_next; 553 399 int ret; 554 400 555 #ifndef VBOX556 global_readfds = readfds;557 global_writefds = writefds;558 global_xfds = xfds;559 #endif /* !VBOX */560 561 401 /* Update time */ 562 #ifdef VBOX563 402 updtime(pData); 564 #else /* !VBOX */565 updtime();566 #endif /* !VBOX */567 403 568 404 /* … … 571 407 if (link_up) { 572 408 if (time_fasttimo && ((curtime - time_fasttimo) >= 2)) { 573 #ifdef VBOX574 409 tcp_fasttimo(pData); 575 #else /* !VBOX */576 tcp_fasttimo();577 #endif /* !VBOX */578 410 time_fasttimo = 0; 579 411 } 580 412 if (do_slowtimo && ((curtime - last_slowtimo) >= 499)) { 581 #ifdef VBOX582 413 ip_slowtimo(pData); 583 414 tcp_slowtimo(pData); 584 #else /* !VBOX */585 ip_slowtimo();586 tcp_slowtimo();587 #endif /* !VBOX */588 415 last_slowtimo = curtime; 589 416 } … … 613 440 */ 614 441 if (FD_ISSET(so->s, xfds)) 615 #ifdef VBOX616 442 sorecvoob(pData, so); 617 #else /* !VBOX */618 sorecvoob(so);619 #endif /* !VBOX */620 443 /* 621 444 * Check sockets for reading … … 626 449 */ 627 450 if (so->so_state & SS_FACCEPTCONN) { 628 #ifdef VBOX629 451 tcp_connect(pData, so); 630 #else /* !VBOX */631 tcp_connect(so);632 #endif /* !VBOX */633 452 continue; 634 453 } /* else */ 635 #ifdef VBOX636 454 ret = soread(pData, so); 637 #else /* !VBOX */638 ret = soread(so);639 #endif /* !VBOX */640 455 641 456 /* Output it if we read something */ 642 457 if (ret > 0) 643 #ifdef VBOX644 458 tcp_output(pData, sototcpcb(so)); 645 #else /* !VBOX */646 tcp_output(sototcpcb(so));647 #endif /* !VBOX */648 459 } 649 460 … … 674 485 * Continue tcp_input 675 486 */ 676 #ifdef VBOX677 487 tcp_input(pData, (struct mbuf *)NULL, sizeof(struct ip), so); 678 #else /* !VBOX */679 tcp_input((struct mbuf *)NULL, sizeof(struct ip), so);680 #endif /* !VBOX */681 488 /* continue; */ 682 489 } else 683 #ifdef VBOX684 490 ret = sowrite(pData, so); 685 #else /* !VBOX */686 ret = sowrite(so);687 #endif /* !VBOX */688 491 /* 689 492 * XXXXX If we wrote something (a lot), there … … 739 542 740 543 if (so->s != -1 && FD_ISSET(so->s, readfds)) { 741 #ifdef VBOX742 544 sorecvfrom(pData, so); 743 #else /* !VBOX */744 sorecvfrom(so);745 #endif /* !VBOX */746 545 } 747 546 } … … 752 551 */ 753 552 if (if_queued && link_up) 754 #ifdef VBOX755 553 if_start(pData); 756 #else /* !VBOX */757 if_start();758 #endif /* !VBOX */759 760 #ifndef VBOX761 /* clear global file descriptor sets.762 * these reside on the stack in vl.c763 * so they're unusable if we're not in764 * slirp_select_fill or slirp_select_poll.765 */766 global_readfds = NULL;767 global_writefds = NULL;768 global_xfds = NULL;769 #endif /* !VBOX */770 554 } 771 555 … … 803 587 }; 804 588 805 #ifdef VBOX806 589 static 807 590 void arp_input(PNATState pData, const uint8_t *pkt, int pkt_len) 808 #else /* !VBOX */809 void arp_input(const uint8_t *pkt, int pkt_len)810 #endif /* !VBOX */811 591 { 812 592 struct ethhdr *eh = (struct ethhdr *)pkt; … … 848 628 memcpy(rah->ar_tha, ah->ar_sha, ETH_ALEN); 849 629 memcpy(rah->ar_tip, ah->ar_sip, 4); 850 #ifdef VBOX851 630 slirp_output(pData->pvUser, arp_reply, sizeof(arp_reply)); 852 #else /* !VBOX */853 slirp_output(arp_reply, sizeof(arp_reply));854 #endif /* !VBOX */855 631 } 856 632 break; … … 860 636 } 861 637 862 #ifdef VBOX863 638 void slirp_input(PNATState pData, const uint8_t *pkt, int pkt_len) 864 #else /* !VBOX */865 void slirp_input(const uint8_t *pkt, int pkt_len)866 #endif /* !VBOX */867 639 { 868 640 struct mbuf *m; … … 875 647 switch(proto) { 876 648 case ETH_P_ARP: 877 #ifdef VBOX878 649 arp_input(pData, pkt, pkt_len); 879 #else /* !VBOX */880 arp_input(pkt, pkt_len);881 #endif /* !VBOX */882 650 break; 883 651 case ETH_P_IP: 884 #ifdef VBOX885 652 m = m_get(pData); 886 #else /* !VBOX */887 m = m_get();888 #endif /* !VBOX */889 653 if (!m) 890 654 return; … … 896 660 m->m_len -= 2 + ETH_HLEN; 897 661 898 #ifdef VBOX899 662 ip_input(pData, m); 900 #else /* !VBOX */901 ip_input(m);902 #endif /* !VBOX */903 663 break; 904 664 default: … … 908 668 909 669 /* output the IP packet to the ethernet device */ 910 #ifdef VBOX911 670 void if_encap(PNATState pData, const uint8_t *ip_data, int ip_data_len) 912 #else /* !VBOX */913 void if_encap(const uint8_t *ip_data, int ip_data_len)914 #endif /* !VBOX */915 671 { 916 672 uint8_t buf[1600]; … … 926 682 eh->h_proto = htons(ETH_P_IP); 927 683 memcpy(buf + sizeof(struct ethhdr), ip_data, ip_data_len); 928 #ifdef VBOX929 684 slirp_output(pData->pvUser, buf, ip_data_len + ETH_HLEN); 930 #else /* !VBOX */931 slirp_output(buf, ip_data_len + ETH_HLEN);932 #endif /* !VBOX */933 685 } 934 686 … … 937 689 { 938 690 if (is_udp) { 939 #ifdef VBOX940 691 if (!udp_listen(pData, htons(host_port), guest_addr.s_addr, 941 692 htons(guest_port), 0)) 942 #else /* !VBOX */943 if (!udp_listen(htons(host_port), guest_addr.s_addr,944 htons(guest_port), 0))945 #endif /* !VBOX */946 693 return -1; 947 694 } else { 948 #ifdef VBOX949 695 if (!solisten(pData, htons(host_port), guest_addr.s_addr, 950 696 htons(guest_port), 0)) 951 #else /* !VBOX */952 if (!solisten(htons(host_port), guest_addr.s_addr,953 htons(guest_port), 0))954 #endif /* !VBOX */955 697 return -1; 956 698 } … … 958 700 } 959 701 960 #ifdef VBOX961 702 int slirp_add_exec(PNATState pData, int do_pty, const char *args, int addr_low_byte, 962 703 int guest_port) 963 #else /* !VBOX */964 int slirp_add_exec(int do_pty, const char *args, int addr_low_byte,965 int guest_port)966 #endif /* !VBOX */967 704 { 968 705 return add_exec(&exec_list, do_pty, (char *)args, -
trunk/src/VBox/Devices/Network/slirp/slirp.h
r1045 r1076 2 2 #define __COMMON_H__ 3 3 4 #if defined(VBOX) && defined(__WIN__)4 #ifdef __WIN__ 5 5 # include <winsock2.h> 6 6 typedef int socklen_t; 7 7 #endif 8 #if defined(VBOX) && defined(__OS2__)/* temporary workaround, see ticket #127 */8 #ifdef __OS2__ /* temporary workaround, see ticket #127 */ 9 9 # define mbstat mbstat_os2 10 10 # include <sys/socket.h> … … 15 15 #define CONFIG_QEMU 16 16 17 #ifndef VBOX 18 #define DEBUG 1 19 #else /* VBOX */ 20 # ifdef DEBUG 21 # undef DEBUG 22 # define DEBUG 1 23 # endif 24 #endif /* VBOX */ 17 #ifdef DEBUG 18 # undef DEBUG 19 # define DEBUG 1 20 #endif 25 21 26 22 #ifndef CONFIG_QEMU 27 23 #include "version.h" 28 24 #endif 29 #ifndef VBOX 30 #include "config.h" 31 #else /* VBOX */ 32 # define LOG_GROUP LOG_GROUP_DRV_NAT 33 # include <VBox/log.h> 34 # include <iprt/mem.h> 35 # ifdef __WIN__ 36 # include <windows.h> 37 # include <io.h> 38 # endif 39 # include <iprt/assert.h> 40 # include <iprt/string.h> 41 # include <VBox/types.h> 25 #define LOG_GROUP LOG_GROUP_DRV_NAT 26 #include <VBox/log.h> 27 #include <iprt/mem.h> 28 #ifdef __WIN__ 29 # include <windows.h> 30 # include <io.h> 31 #endif 32 #include <iprt/assert.h> 33 #include <iprt/string.h> 34 #include <VBox/types.h> 42 35 43 36 # define malloc(a) RTMemAllocZ(a) … … 45 38 # define realloc(a,b) RTMemRealloc(a, b) 46 39 47 #endif /* VBOX */48 40 #include "slirp_config.h" 49 41 … … 52 44 #ifndef _MSC_VER 53 45 # include <inttypes.h> 54 #endif /* !VBOX */46 #endif 55 47 56 48 typedef uint8_t u_int8_t; … … 60 52 typedef char *caddr_t; 61 53 62 #ifndef VBOX63 # include <windows.h>64 # include <winsock2.h>65 #endif /* !VBOX */66 54 # include <sys/timeb.h> 67 55 # include <iphlpapi.h> … … 238 226 #endif 239 227 240 #ifdef VBOX241 228 #include "libslirp.h" 242 #endif /* !VBOX */243 229 244 230 #include "debug.h" … … 265 251 #include "bootp.h" 266 252 #include "tftp.h" 267 #ifndef VBOX 268 #include "libslirp.h" 269 #endif /* !VBOX */ 270 271 #ifdef VBOX 253 272 254 #include "slirp_state.h" 273 #endif /* VBOX */274 275 #ifndef VBOX276 extern struct ttys *ttys_unit[MAX_INTERFACES];277 #endif /* !VBOX */278 255 279 256 #ifndef NULL … … 281 258 #endif 282 259 283 #ifdef VBOX284 260 void if_start _P((PNATState)); 285 #else /* !VBOX */286 #ifndef FULL_BOLT287 void if_start _P((void));288 #else289 void if_start _P((struct ttys *));290 #endif291 #endif /* !VBOX */292 261 293 262 #ifdef BAD_SPRINTF … … 317 286 #endif 318 287 319 #ifndef VBOX320 void lprint _P((const char *, ...));321 #else322 288 DECLINLINE(void) lprint (const char *pszFormat, ...) 323 289 { … … 333 299 #endif 334 300 } 335 #endif336 301 337 302 extern int do_echo; … … 360 325 361 326 /* if.c */ 362 #ifdef VBOX363 327 void if_init _P((PNATState)); 364 328 void if_output _P((PNATState, struct socket *, struct mbuf *)); 365 #else /* VBOX */366 void if_init _P((void));367 void if_output _P((struct socket *, struct mbuf *));368 #endif /* VBOX */369 329 370 330 /* ip_input.c */ 371 #ifdef VBOX372 331 void ip_init _P((PNATState)); 373 332 void ip_input _P((PNATState, struct mbuf *)); … … 377 336 void ip_deq _P((PNATState, register struct ipasfrag *)); 378 337 void ip_slowtimo _P((PNATState)); 379 #else /* !VBOX */380 void ip_init _P((void));381 void ip_input _P((struct mbuf *));382 struct ip * ip_reass _P((register struct ipasfrag *, register struct ipq *));383 void ip_freef _P((struct ipq *));384 void ip_enq _P((register struct ipasfrag *, register struct ipasfrag *));385 void ip_deq _P((register struct ipasfrag *));386 void ip_slowtimo _P((void));387 #endif /* !VBOX */388 338 void ip_stripoptions _P((register struct mbuf *, struct mbuf *)); 389 339 390 340 /* ip_output.c */ 391 #ifdef VBOX392 341 int ip_output _P((PNATState, struct socket *, struct mbuf *)); 393 #else /* !VBOX */394 int ip_output _P((struct socket *, struct mbuf *));395 #endif /* !VBOX */396 342 397 343 /* tcp_input.c */ 398 #ifdef VBOX399 344 int tcp_reass _P((PNATState, register struct tcpcb *, register struct tcpiphdr *, struct mbuf *)); 400 345 void tcp_input _P((PNATState, register struct mbuf *, int, struct socket *)); … … 402 347 void tcp_xmit_timer _P((PNATState, register struct tcpcb *, int)); 403 348 int tcp_mss _P((PNATState, register struct tcpcb *, u_int)); 404 #else /* !VBOX */405 int tcp_reass _P((register struct tcpcb *, register struct tcpiphdr *, struct mbuf *));406 void tcp_input _P((register struct mbuf *, int, struct socket *));407 void tcp_dooptions _P((struct tcpcb *, u_char *, int, struct tcpiphdr *));408 void tcp_xmit_timer _P((register struct tcpcb *, int));409 int tcp_mss _P((register struct tcpcb *, u_int));410 #endif /* !VBOX */411 349 412 350 /* tcp_output.c */ 413 #ifdef VBOX414 351 int tcp_output _P((PNATState, register struct tcpcb *)); 415 #else /* !VBOX */416 int tcp_output _P((register struct tcpcb *));417 #endif /* !VBOX */418 352 void tcp_setpersist _P((register struct tcpcb *)); 419 353 420 354 /* tcp_subr.c */ 421 #ifdef VBOX422 355 void tcp_init _P((PNATState)); 423 #else /* !VBOX */424 void tcp_init _P((void));425 #endif /* !VBOX */426 356 void tcp_template _P((struct tcpcb *)); 427 #ifdef VBOX428 357 void tcp_respond _P((PNATState, struct tcpcb *, register struct tcpiphdr *, register struct mbuf *, tcp_seq, tcp_seq, int)); 429 358 struct tcpcb * tcp_newtcpcb _P((PNATState, struct socket *)); 430 359 struct tcpcb * tcp_close _P((PNATState, register struct tcpcb *)); 431 #else /* !VBOX */432 void tcp_respond _P((struct tcpcb *, register struct tcpiphdr *, register struct mbuf *, tcp_seq, tcp_seq, int));433 struct tcpcb * tcp_newtcpcb _P((struct socket *));434 struct tcpcb * tcp_close _P((register struct tcpcb *));435 #endif /* !VBOX */436 360 void tcp_drain _P((void)); 437 #ifdef VBOX438 361 void tcp_sockclosed _P((PNATState, struct tcpcb *)); 439 362 int tcp_fconnect _P((PNATState, struct socket *)); 440 363 void tcp_connect _P((PNATState, struct socket *)); 441 364 int tcp_attach _P((PNATState, struct socket *)); 442 #else /* !VBOX */443 void tcp_sockclosed _P((struct tcpcb *));444 int tcp_fconnect _P((struct socket *));445 void tcp_connect _P((struct socket *));446 int tcp_attach _P((struct socket *));447 #endif /* !VBOX */448 365 u_int8_t tcp_tos _P((struct socket *)); 449 #ifdef VBOX450 366 int tcp_emu _P((PNATState, struct socket *, struct mbuf *)); 451 367 int tcp_ctl _P((PNATState, struct socket *)); 452 368 struct tcpcb *tcp_drop(PNATState, struct tcpcb *tp, int err); 453 #else /* !VBOX */454 int tcp_emu _P((struct socket *, struct mbuf *));455 int tcp_ctl _P((struct socket *));456 struct tcpcb *tcp_drop(struct tcpcb *tp, int err);457 #endif /* !VBOX */458 369 459 370 #ifdef USE_PPP -
trunk/src/VBox/Devices/Network/slirp/slirp_config.h
r1 r1076 55 55 #undef DUMMY_PPP 56 56 57 #if defined(VBOX) && defined(_MSC_VER)57 #ifdef _MSC_VER 58 58 #undef HAVE_UNISTD_H 59 59 #else 60 60 /* Define if you have unistd.h */ 61 61 #define HAVE_UNISTD_H 62 #endif /* VBOX */62 #endif 63 63 64 64 /* Define if you have stdlib.h */ … … 133 133 134 134 /* Define to whatever your compiler thinks inline should be */ 135 #ifndef VBOX136 #define inline inline137 #else /* VBOX */138 135 #if defined(_MSC_VER) && !defined(__cplusplus) 139 136 # define inline _inline … … 141 138 # define inline inline 142 139 #endif 143 #endif /* VBOX */144 140 145 141 /* Define to whatever your compiler thinks const should be */ … … 165 161 166 162 /* Define to sizeof(char *) */ 167 #ifdef VBOX168 163 #define HOST_LONG_BITS ARCH_BITS 169 #endif /* VBOX */170 164 #define SIZEOF_CHAR_P (HOST_LONG_BITS / 8) 171 165 -
trunk/src/VBox/Devices/Network/slirp/socket.c
r1048 r1076 68 68 */ 69 69 void 70 #ifdef VBOX71 70 sofree(PNATState pData, struct socket *so) 72 #else /* !VBOX */73 sofree(so)74 struct socket *so;75 #endif /* !VBOX */76 71 { 77 72 if (so->so_emu==EMU_RSH && so->extra) { 78 #ifdef VBOX79 73 sofree(pData, so->extra); 80 #else /* !VBOX */81 sofree(so->extra);82 #endif /* !VBOX */83 74 so->extra=NULL; 84 75 } … … 88 79 udp_last_so = &udb; 89 80 90 #ifdef VBOX91 81 m_free(pData, so->so_m); 92 #else /* !VBOX */93 m_free(so->so_m);94 #endif /* !VBOX */95 82 96 83 if(so->so_next && so->so_prev) … … 106 93 */ 107 94 int 108 #ifdef VBOX109 95 soread(PNATState pData, struct socket *so) 110 #else /* !VBOX */111 soread(so)112 struct socket *so;113 #endif /* !VBOX */114 96 { 115 97 int n, nn, lss, total; … … 180 162 DEBUG_MISC((dfd, " --- soread() disconnected, nn = %d, errno = %d-%s\n", nn, errno,strerror(errno))); 181 163 sofcantrcvmore(so); 182 #ifdef VBOX183 164 tcp_sockclosed(pData, sototcpcb(so)); 184 #else /* !VBOX */185 tcp_sockclosed(sototcpcb(so));186 #endif /* !VBOX */187 165 return -1; 188 166 } … … 225 203 */ 226 204 void 227 #ifdef VBOX228 205 sorecvoob(PNATState pData, struct socket *so) 229 #else /* !VBOX */230 sorecvoob(so)231 struct socket *so;232 #endif /* !VBOX */233 206 { 234 207 struct tcpcb *tp = sototcpcb(so); … … 245 218 * urgent data. 246 219 */ 247 #ifdef VBOX248 220 soread(pData, so); 249 #else /* !VBOX */250 soread(so);251 #endif /* !VBOX */252 221 tp->snd_up = tp->snd_una + so->so_snd.sb_cc; 253 222 tp->t_force = 1; 254 #ifdef VBOX255 223 tcp_output(pData, tp); 256 #else /* !VBOX */257 tcp_output(tp);258 #endif /* !VBOX */259 224 tp->t_force = 0; 260 225 } … … 324 289 */ 325 290 int 326 #ifdef VBOX327 291 sowrite(PNATState pData, struct socket *so) 328 #else /* !VBOX */329 sowrite(so)330 struct socket *so;331 #endif /* !VBOX */332 292 { 333 293 int n,nn; … … 387 347 so->so_state, errno)); 388 348 sofcantsendmore(so); 389 #ifdef VBOX390 349 tcp_sockclosed(pData, sototcpcb(so)); 391 #else /* !VBOX */392 tcp_sockclosed(sototcpcb(so));393 #endif /* !VBOX */394 350 return -1; 395 351 } … … 425 381 */ 426 382 void 427 #ifdef VBOX428 383 sorecvfrom(PNATState pData, struct socket *so) 429 #else /* !VBOX */430 sorecvfrom(so)431 struct socket *so;432 #endif /* !VBOX */433 384 { 434 385 struct sockaddr_in addr; 435 #ifndef VBOX436 int addrlen = sizeof(struct sockaddr_in);437 #else /* VBOX */438 386 socklen_t addrlen = sizeof(struct sockaddr_in); 439 #endif /* VBOX */440 387 441 388 DEBUG_CALL("sorecvfrom"); … … 458 405 DEBUG_MISC((dfd," udp icmp rx errno = %d-%s\n", 459 406 errno,strerror(errno))); 460 #ifdef VBOX461 407 icmp_error(pData, so->so_m, ICMP_UNREACH,code, 0,strerror(errno)); 462 #else /* !VBOX */463 icmp_error(so->so_m, ICMP_UNREACH,code, 0,strerror(errno));464 #endif /* !VBOX */465 408 } else { 466 #ifdef VBOX467 409 icmp_reflect(pData, so->so_m); 468 #else /* !VBOX */469 icmp_reflect(so->so_m);470 #endif /* !VBOX */471 410 so->so_m = 0; /* Don't m_free() it again! */ 472 411 } 473 412 /* No need for this socket anymore, udp_detach it */ 474 #ifdef VBOX475 413 udp_detach(pData, so); 476 #else /* !VBOX */477 udp_detach(so);478 #endif /* !VBOX */479 414 } else { /* A "normal" UDP packet */ 480 415 struct mbuf *m; 481 416 int len, n; 482 417 483 #ifdef VBOX484 418 if (!(m = m_get(pData))) return; 485 #else /* !VBOX */486 if (!(m = m_get())) return;487 #endif /* !VBOX */488 419 m->m_data += if_maxlinkhdr; 489 420 … … 514 445 515 446 DEBUG_MISC((dfd," rx error, tx icmp ICMP_UNREACH:%i\n", code)); 516 #ifdef VBOX517 447 icmp_error(pData, so->so_m, ICMP_UNREACH,code, 0,strerror(errno)); 518 448 m_free(pData, m); 519 #else /* !VBOX */520 icmp_error(so->so_m, ICMP_UNREACH,code, 0,strerror(errno));521 m_free(m);522 #endif /* !VBOX */523 449 } else { 524 450 /* … … 545 471 * make it look like that's where it came from, done by udp_output 546 472 */ 547 #ifdef VBOX548 473 udp_output(pData, so, m, &addr); 549 #else /* !VBOX */550 udp_output(so, m, &addr);551 #endif /* !VBOX */552 474 } /* rx error */ 553 475 } /* if ping packet */ … … 558 480 */ 559 481 int 560 #ifdef VBOX561 482 sosendto(PNATState pData, struct socket *so, struct mbuf *m) 562 #else /* !VBOX */563 sosendto(so, m)564 struct socket *so;565 struct mbuf *m;566 #endif /* !VBOX */567 483 { 568 484 int ret; … … 611 527 */ 612 528 struct socket * 613 #ifdef VBOX614 529 solisten(PNATState pData, u_int port, u_int32_t laddr, u_int lport, int flags) 615 #else /* !VBOX */616 solisten(port, laddr, lport, flags)617 u_int port;618 u_int32_t laddr;619 u_int lport;620 int flags;621 #endif /* !VBOX */622 530 { 623 531 struct sockaddr_in addr; 624 532 struct socket *so; 625 #ifndef VBOX626 int s, addrlen = sizeof(addr), opt = 1;627 #else /* VBOX */628 533 socklen_t addrlen = sizeof(addr); 629 534 int s, opt = 1; 630 #endif /* VBOX */631 535 632 536 DEBUG_CALL("solisten"); … … 666 570 (bind(s,(struct sockaddr *)&addr, sizeof(addr)) < 0) || 667 571 (listen(s,1) < 0)) { 668 #ifndef VBOX669 int tmperrno = errno; /* Don't clobber the real reason we failed */670 671 close(s);672 sofree(so);673 /* Restore the real errno */674 #ifdef _WIN32675 WSASetLastError(tmperrno);676 #else677 errno = tmperrno;678 #endif679 #else /* VBOX */680 572 #ifdef __WIN__ 681 573 int tmperrno = WSAGetLastError(); /* Don't clobber the real reason we failed */ … … 691 583 errno = tmperrno; 692 584 #endif 693 #endif /* VBOX */694 585 return NULL; 695 586 } … … 761 652 if ((so->so_state & SS_NOFDREF) == 0) { 762 653 shutdown(so->s,0); 763 #ifndef VBOX764 if(global_writefds) {765 FD_CLR(so->s,global_writefds);766 }767 #endif /* !VBOX */768 654 } 769 655 so->so_state &= ~(SS_ISFCONNECTING); … … 780 666 if ((so->so_state & SS_NOFDREF) == 0) { 781 667 shutdown(so->s,1); /* send FIN to fhost */ 782 #ifndef VBOX783 if (global_readfds) {784 FD_CLR(so->s,global_readfds);785 }786 if (global_xfds) {787 FD_CLR(so->s,global_xfds);788 }789 #endif /* !VBOX */790 668 } 791 669 so->so_state &= ~(SS_ISFCONNECTING); -
trunk/src/VBox/Devices/Network/slirp/socket.h
r1033 r1076 85 85 struct socket * solookup _P((struct socket *, struct in_addr, u_int, struct in_addr, u_int)); 86 86 struct socket * socreate _P((void)); 87 #ifdef VBOX88 87 void sofree _P((PNATState, struct socket *)); 89 88 int soread _P((PNATState, struct socket *)); 90 89 void sorecvoob _P((PNATState, struct socket *)); 91 #else /* !VBOX */92 void sofree _P((struct socket *));93 int soread _P((struct socket *));94 void sorecvoob _P((struct socket *));95 #endif /* !VBOX */96 90 int sosendoob _P((struct socket *)); 97 #ifdef VBOX98 91 int sowrite _P((PNATState, struct socket *)); 99 92 void sorecvfrom _P((PNATState, struct socket *)); 100 93 int sosendto _P((PNATState, struct socket *, struct mbuf *)); 101 94 struct socket * solisten _P((PNATState, u_int, u_int32_t, u_int, int)); 102 #else /* !VBOX */103 int sowrite _P((struct socket *));104 void sorecvfrom _P((struct socket *));105 int sosendto _P((struct socket *, struct mbuf *));106 struct socket * solisten _P((u_int, u_int32_t, u_int, int));107 #endif /* !VBOX */108 95 void sorwakeup _P((struct socket *)); 109 96 void sowwakeup _P((struct socket *)); -
trunk/src/VBox/Devices/Network/slirp/tcp.h
r1033 r1076 59 59 tcp_seq th_seq; /* sequence number */ 60 60 tcp_seq th_ack; /* acknowledgement number */ 61 #ifdef VBOX62 61 /* 63 62 * bitfield types must be u_int8_t for MSVC, otherwise it will use a full dword (for u_int) 64 63 */ 65 #endif66 64 #ifdef WORDS_BIGENDIAN 67 65 u_int th_off:4, /* data offset */ … … 180 178 #define TCP_ISSINCR (125*1024) /* increment for tcp_iss each second */ 181 179 182 #ifndef VBOX183 extern tcp_seq tcp_iss; /* tcp initial send seq # */184 #endif /* !VBOX */185 180 186 #ifdef VBOX187 181 extern const char * const tcpstates[]; 188 #else /* !VBOX */189 extern char *tcpstates[];190 #endif /* !VBOX */191 182 192 183 #endif -
trunk/src/VBox/Devices/Network/slirp/tcp_input.c
r1048 r1076 46 46 #include "ip_icmp.h" 47 47 48 #ifndef VBOX49 struct socket tcb;50 51 int tcprexmtthresh = 3;52 struct socket *tcp_last_so = &tcb;53 54 tcp_seq tcp_iss; /* tcp initial send seq # */55 #endif /* !VBOX */56 48 57 49 #define TCP_PAWS_IDLE (24 * 24 * 60 * 60 * PR_SLOWHZ) … … 71 63 * when segments are out of order (so fast retransmit can work). 72 64 */ 73 #ifdef VBOX74 65 #ifdef TCP_ACK_HACK 75 66 #define TCP_REASS(pData, tp, ti, m, so, flags) {\ … … 116 107 } 117 108 #endif 118 #else /* !VBOX */119 #ifdef TCP_ACK_HACK120 #define TCP_REASS(tp, ti, m, so, flags) {\121 if ((ti)->ti_seq == (tp)->rcv_nxt && \122 u32_to_ptr((tp)->seg_next, struct tcpcb *) == (tp) && \123 (tp)->t_state == TCPS_ESTABLISHED) {\124 if (ti->ti_flags & TH_PUSH) \125 tp->t_flags |= TF_ACKNOW; \126 else \127 tp->t_flags |= TF_DELACK; \128 (tp)->rcv_nxt += (ti)->ti_len; \129 flags = (ti)->ti_flags & TH_FIN; \130 tcpstat.tcps_rcvpack++;\131 tcpstat.tcps_rcvbyte += (ti)->ti_len;\132 if (so->so_emu) { \133 if (tcp_emu((so),(m))) sbappend((so), (m)); \134 } else \135 sbappend((so), (m)); \136 /* sorwakeup(so); */ \137 } else {\138 (flags) = tcp_reass((tp), (ti), (m)); \139 tp->t_flags |= TF_ACKNOW; \140 } \141 }142 #else143 #define TCP_REASS(tp, ti, m, so, flags) { \144 if ((ti)->ti_seq == (tp)->rcv_nxt && \145 u32_to_ptr((tp)->seg_next, struct tcpcb *) == (tp) && \146 (tp)->t_state == TCPS_ESTABLISHED) { \147 tp->t_flags |= TF_DELACK; \148 (tp)->rcv_nxt += (ti)->ti_len; \149 flags = (ti)->ti_flags & TH_FIN; \150 tcpstat.tcps_rcvpack++;\151 tcpstat.tcps_rcvbyte += (ti)->ti_len;\152 if (so->so_emu) { \153 if (tcp_emu((so),(m))) sbappend(so, (m)); \154 } else \155 sbappend((so), (m)); \156 /* sorwakeup(so); */ \157 } else { \158 (flags) = tcp_reass((tp), (ti), (m)); \159 tp->t_flags |= TF_ACKNOW; \160 } \161 }162 #endif163 #endif /* !VBOX */164 109 165 110 int 166 #ifdef VBOX167 111 tcp_reass(PNATState pData, register struct tcpcb *tp, register struct tcpiphdr *ti, struct mbuf *m) 168 #else /* !VBOX */169 tcp_reass(tp, ti, m)170 register struct tcpcb *tp;171 register struct tcpiphdr *ti;172 struct mbuf *m;173 #endif /* !VBOX */174 112 { 175 113 register struct tcpiphdr *q; … … 206 144 tcpstat.tcps_rcvduppack++; 207 145 tcpstat.tcps_rcvdupbyte += ti->ti_len; 208 #ifdef VBOX209 146 m_freem(pData, m); 210 #else /* !VBOX */211 m_freem(m);212 #endif /* !VBOX */213 147 /* 214 148 * Try to present any queued data … … 246 180 m = REASS_MBUF_GET(u32_to_ptr(pData, q->ti_prev, struct tcpiphdr *)); 247 181 remque_32(pData, u32_to_ptr(pData, q->ti_prev, struct tcpiphdr *)); 248 #ifdef VBOX249 182 m_freem(pData, m); 250 #else /* !VBOX */251 m_freem(m);252 #endif /* !VBOX */253 183 } 254 184 … … 278 208 /* if (so->so_state & SS_FCANTRCVMORE) */ 279 209 if (so->so_state & SS_FCANTSENDMORE) 280 #ifdef VBOX281 210 m_freem(pData, m); 282 #else /* !VBOX */283 m_freem(m);284 #endif /* !VBOX */285 211 else { 286 212 if (so->so_emu) { 287 #ifdef VBOX288 213 if (tcp_emu(pData, so,m)) sbappend(pData, so, m); 289 #else /* !VBOX */290 if (tcp_emu(so,m)) sbappend(so, m);291 #endif /* !VBOX */292 214 } else 293 #ifdef VBOX294 215 sbappend(pData, so, m); 295 #else /* !VBOX */296 sbappend(so, m);297 #endif /* !VBOX */298 216 } 299 217 } while (ti != (struct tcpiphdr *)tp && ti->ti_seq == tp->rcv_nxt); … … 307 225 */ 308 226 void 309 #ifdef VBOX310 227 tcp_input(PNATState pData, register struct mbuf *m, int iphlen, struct socket *inso) 311 #else /* !VBOX */312 tcp_input(m, iphlen, inso)313 register struct mbuf *m;314 int iphlen;315 struct socket *inso;316 #endif /* !VBOX */317 228 { 318 229 struct ip save_ip, *ip; … … 475 386 if ((so = socreate()) == NULL) 476 387 goto dropwithreset; 477 #ifdef VBOX478 388 if (tcp_attach(pData, so) < 0) { 479 #else /* !VBOX */480 if (tcp_attach(so) < 0) {481 #endif /* !VBOX */482 389 free(so); /* Not sofree (if it failed, it's not insqued) */ 483 390 goto dropwithreset; … … 540 447 */ 541 448 if (optp && tp->t_state != TCPS_LISTEN) 542 #ifdef VBOX543 449 tcp_dooptions(pData, tp, (u_char *)optp, optlen, ti); 544 #else /* !VBOX */545 tcp_dooptions(tp, (u_char *)optp, optlen, ti);546 #endif /* !VBOX */547 450 /* , */ 548 451 /* &ts_present, &ts_val, &ts_ecr); */ … … 595 498 */ if (tp->t_rtt && 596 499 SEQ_GT(ti->ti_ack, tp->t_rtseq)) 597 #ifdef VBOX598 500 tcp_xmit_timer(pData, tp, tp->t_rtt); 599 #else /* !VBOX */600 tcp_xmit_timer(tp, tp->t_rtt);601 #endif /* !VBOX */602 501 acked = ti->ti_ack - tp->snd_una; 603 502 tcpstat.tcps_rcvackpack++; … … 605 504 sbdrop(&so->so_snd, acked); 606 505 tp->snd_una = ti->ti_ack; 607 #ifdef VBOX608 506 m_freem(pData, m); 609 #else /* !VBOX */610 m_freem(m);611 #endif /* !VBOX */612 507 613 508 /* … … 638 533 */ 639 534 if (so->so_snd.sb_cc) 640 #ifdef VBOX641 535 (void) tcp_output(pData, tp); 642 #else /* !VBOX */643 (void) tcp_output(tp);644 #endif /* !VBOX */645 536 646 537 return; … … 662 553 */ 663 554 if (so->so_emu) { 664 #ifdef VBOX665 555 if (tcp_emu(pData, so,m)) sbappend(pData, so, m); 666 #else /* !VBOX */667 if (tcp_emu(so,m)) sbappend(so, m);668 #endif /* !VBOX */669 556 } else 670 #ifdef VBOX671 557 sbappend(pData, so, m); 672 #else /* !VBOX */673 sbappend(so, m);674 #endif /* !VBOX */675 558 676 559 /* … … 690 573 */ 691 574 tp->t_flags |= TF_ACKNOW; 692 #ifdef VBOX693 575 tcp_output(pData, tp); 694 #else /* !VBOX */695 tcp_output(tp);696 #endif /* !VBOX */697 576 return; 698 577 } … … 774 653 } 775 654 776 #ifdef VBOX777 655 if((tcp_fconnect(pData, so) == -1) && (errno != EINPROGRESS) && (errno != EWOULDBLOCK)) { 778 #else /* !VBOX */779 if((tcp_fconnect(so) == -1) && (errno != EINPROGRESS) && (errno != EWOULDBLOCK)) {780 #endif /* !VBOX */781 656 u_char code=ICMP_UNREACH_NET; 782 657 DEBUG_MISC((dfd," tcp fconnect errno = %d-%s\n", … … 784 659 if(errno == ECONNREFUSED) { 785 660 /* ACK the SYN, send RST to refuse the connection */ 786 #ifdef VBOX787 661 tcp_respond(pData, tp, ti, m, ti->ti_seq+1, (tcp_seq)0, 788 662 TH_RST|TH_ACK); 789 #else /* !VBOX */790 tcp_respond(tp, ti, m, ti->ti_seq+1, (tcp_seq)0,791 TH_RST|TH_ACK);792 #endif /* !VBOX */793 663 } else { 794 664 if(errno == EHOSTUNREACH) code=ICMP_UNREACH_HOST; … … 800 670 m->m_len += sizeof(struct tcpiphdr)+off-sizeof(struct tcphdr); 801 671 *ip=save_ip; 802 #ifdef VBOX803 672 icmp_error(pData, m, ICMP_UNREACH,code, 0,strerror(errno)); 804 #else /* !VBOX */805 icmp_error(m, ICMP_UNREACH,code, 0,strerror(errno));806 #endif /* !VBOX */807 673 } 808 #ifdef VBOX809 674 tp = tcp_close(pData, tp); 810 675 m_free(pData, m); 811 #else /* !VBOX */812 tp = tcp_close(tp);813 m_free(m);814 #endif /* !VBOX */815 676 } else { 816 677 /* … … 832 693 */ 833 694 if (so->so_state & SS_NOFDREF) { 834 #ifdef VBOX835 695 tp = tcp_close(pData, tp); 836 #else /* !VBOX */837 tp = tcp_close(tp);838 #endif /* !VBOX */839 696 goto dropwithreset; 840 697 } … … 843 700 844 701 if (optp) 845 #ifdef VBOX846 702 tcp_dooptions(pData, tp, (u_char *)optp, optlen, ti); 847 #else /* !VBOX */848 tcp_dooptions(tp, (u_char *)optp, optlen, ti);849 #endif /* !VBOX */850 703 /* , */ 851 704 /* &ts_present, &ts_val, &ts_ecr); */ … … 886 739 if (tiflags & TH_RST) { 887 740 if (tiflags & TH_ACK) 888 #ifdef VBOX889 741 tp = tcp_drop(pData, tp,0); /* XXX Check t_softerror! */ 890 #else /* !VBOX */891 tp = tcp_drop(tp,0); /* XXX Check t_softerror! */892 #endif /* !VBOX */893 742 goto drop; 894 743 } … … 918 767 * } 919 768 */ 920 #ifdef VBOX921 769 (void) tcp_reass(pData, tp, (struct tcpiphdr *)0, 922 770 (struct mbuf *)0); 923 #else /* !VBOX */924 (void) tcp_reass(tp, (struct tcpiphdr *)0,925 (struct mbuf *)0);926 #endif /* !VBOX */927 771 /* 928 772 * if we didn't have to retransmit the SYN, … … 930 774 */ 931 775 if (tp->t_rtt) 932 #ifdef VBOX933 776 tcp_xmit_timer(pData, tp, tp->t_rtt); 934 #else /* !VBOX */935 tcp_xmit_timer(tp, tp->t_rtt);936 #endif /* !VBOX */937 777 } else 938 778 tp->t_state = TCPS_SYN_RECEIVED; … … 1044 884 if ((so->so_state & SS_NOFDREF) && 1045 885 tp->t_state > TCPS_CLOSE_WAIT && ti->ti_len) { 1046 #ifdef VBOX1047 886 tp = tcp_close(pData, tp); 1048 #else /* !VBOX */1049 tp = tcp_close(tp);1050 #endif /* !VBOX */1051 887 tcpstat.tcps_rcvafterclose++; 1052 888 goto dropwithreset; … … 1072 908 SEQ_GT(ti->ti_seq, tp->rcv_nxt)) { 1073 909 iss = tp->rcv_nxt + TCP_ISSINCR; 1074 #ifdef VBOX1075 910 tp = tcp_close(pData, tp); 1076 #else /* !VBOX */1077 tp = tcp_close(tp);1078 #endif /* !VBOX */1079 911 goto findso; 1080 912 } … … 1134 966 tp->t_state = TCPS_CLOSED; 1135 967 tcpstat.tcps_drops++; 1136 #ifdef VBOX1137 968 tp = tcp_close(pData, tp); 1138 #else /* !VBOX */1139 tp = tcp_close(tp);1140 #endif /* !VBOX */1141 969 goto drop; 1142 970 … … 1144 972 case TCPS_LAST_ACK: 1145 973 case TCPS_TIME_WAIT: 1146 #ifdef VBOX1147 974 tp = tcp_close(pData, tp); 1148 #else /* !VBOX */1149 tp = tcp_close(tp);1150 #endif /* !VBOX */1151 975 goto drop; 1152 976 } … … 1157 981 */ 1158 982 if (tiflags & TH_SYN) { 1159 #ifdef VBOX1160 983 tp = tcp_drop(pData, tp,0); 1161 #else /* !VBOX */1162 tp = tcp_drop(tp,0);1163 #endif /* !VBOX */1164 984 goto dropwithreset; 1165 985 } … … 1196 1016 if (so->so_state & SS_CTL) { 1197 1017 /* So tcp_ctl reports the right state */ 1198 #ifdef VBOX1199 1018 ret = tcp_ctl(pData, so); 1200 #else /* !VBOX */1201 ret = tcp_ctl(so);1202 #endif /* !VBOX */1203 1019 if (ret == 1) { 1204 1020 soisfconnected(so); … … 1221 1037 * } 1222 1038 */ 1223 #ifdef VBOX1224 1039 (void) tcp_reass(pData, tp, (struct tcpiphdr *)0, (struct mbuf *)0); 1225 #else /* !VBOX */1226 (void) tcp_reass(tp, (struct tcpiphdr *)0, (struct mbuf *)0);1227 #endif /* !VBOX */1228 1040 tp->snd_wl1 = ti->ti_seq - 1; 1229 1041 /* Avoid ack processing; snd_una==ti_ack => dup ack */ … … 1292 1104 tp->snd_nxt = ti->ti_ack; 1293 1105 tp->snd_cwnd = tp->t_maxseg; 1294 #ifdef VBOX1295 1106 (void) tcp_output(pData, tp); 1296 #else /* !VBOX */1297 (void) tcp_output(tp);1298 #endif /* !VBOX */1299 1107 tp->snd_cwnd = tp->snd_ssthresh + 1300 1108 tp->t_maxseg * tp->t_dupacks; … … 1304 1112 } else if (tp->t_dupacks > tcprexmtthresh) { 1305 1113 tp->snd_cwnd += tp->t_maxseg; 1306 #ifdef VBOX1307 1114 (void) tcp_output(pData, tp); 1308 #else /* !VBOX */1309 (void) tcp_output(tp);1310 #endif /* !VBOX */1311 1115 goto drop; 1312 1116 } … … 1346 1150 */ 1347 1151 if (tp->t_rtt && SEQ_GT(ti->ti_ack, tp->t_rtseq)) 1348 #ifdef VBOX1349 1152 tcp_xmit_timer(pData, tp,tp->t_rtt); 1350 #else /* !VBOX */1351 tcp_xmit_timer(tp,tp->t_rtt);1352 #endif /* !VBOX */1353 1153 1354 1154 /* … … 1445 1245 case TCPS_LAST_ACK: 1446 1246 if (ourfinisacked) { 1447 #ifdef VBOX1448 1247 tp = tcp_close(pData, tp); 1449 #else /* !VBOX */1450 tp = tcp_close(tp);1451 #endif /* !VBOX */1452 1248 goto drop; 1453 1249 } … … 1543 1339 if ((ti->ti_len || (tiflags&TH_FIN)) && 1544 1340 TCPS_HAVERCVDFIN(tp->t_state) == 0) { 1545 #ifdef VBOX1546 1341 TCP_REASS(pData, tp, ti, m, so, tiflags); 1547 #else /* !VBOX */1548 TCP_REASS(tp, ti, m, so, tiflags);1549 #endif /* !VBOX */1550 1342 /* 1551 1343 * Note the amount of data that peer has sent into … … 1555 1347 len = so->so_rcv.sb_datalen - (tp->rcv_adv - tp->rcv_nxt); 1556 1348 } else { 1557 #ifdef VBOX1558 1349 m_free(pData, m); 1559 #else /* !VBOX */1560 m_free(m);1561 #endif /* !VBOX */1562 1350 tiflags &= ~TH_FIN; 1563 1351 } … … 1650 1438 */ 1651 1439 if (needoutput || (tp->t_flags & TF_ACKNOW)) { 1652 #ifdef VBOX1653 1440 (void) tcp_output(pData, tp); 1654 #else /* !VBOX */1655 (void) tcp_output(tp);1656 #endif /* !VBOX */1657 1441 } 1658 1442 return; … … 1665 1449 if (tiflags & TH_RST) 1666 1450 goto drop; 1667 #ifdef VBOX1668 1451 m_freem(pData, m); 1669 #else /* !VBOX */1670 m_freem(m);1671 #endif /* !VBOX */1672 1452 tp->t_flags |= TF_ACKNOW; 1673 #ifdef VBOX1674 1453 (void) tcp_output(pData, tp); 1675 #else /* !VBOX */1676 (void) tcp_output(tp);1677 #endif /* !VBOX */1678 1454 return; 1679 1455 … … 1681 1457 /* reuses m if m!=NULL, m_free() unnecessary */ 1682 1458 if (tiflags & TH_ACK) 1683 #ifdef VBOX1684 1459 tcp_respond(pData, tp, ti, m, (tcp_seq)0, ti->ti_ack, TH_RST); 1685 #else /* !VBOX */1686 tcp_respond(tp, ti, m, (tcp_seq)0, ti->ti_ack, TH_RST);1687 #endif /* !VBOX */1688 1460 else { 1689 1461 if (tiflags & TH_SYN) ti->ti_len++; 1690 #ifdef VBOX1691 1462 tcp_respond(pData, tp, ti, m, ti->ti_seq+ti->ti_len, (tcp_seq)0, 1692 1463 TH_RST|TH_ACK); 1693 #else /* !VBOX */1694 tcp_respond(tp, ti, m, ti->ti_seq+ti->ti_len, (tcp_seq)0,1695 TH_RST|TH_ACK);1696 #endif /* !VBOX */1697 1464 } 1698 1465 … … 1703 1470 * Drop space held by incoming segment and return. 1704 1471 */ 1705 #ifdef VBOX1706 1472 m_free(pData, m); 1707 #else /* !VBOX */1708 m_free(m);1709 #endif /* !VBOX */1710 1473 1711 1474 return; … … 1717 1480 */ 1718 1481 void 1719 #ifdef VBOX1720 1482 tcp_dooptions(PNATState pData, struct tcpcb *tp, u_char *cp, int cnt, struct tcpiphdr *ti) 1721 #else /* !VBOX */1722 tcp_dooptions(tp, cp, cnt, ti)1723 struct tcpcb *tp;1724 u_char *cp;1725 int cnt;1726 struct tcpiphdr *ti;1727 #endif /* !VBOX */1728 1483 { 1729 1484 u_int16_t mss; … … 1756 1511 memcpy((char *) &mss, (char *) cp + 2, sizeof(mss)); 1757 1512 NTOHS(mss); 1758 #ifdef VBOX1759 1513 (void) tcp_mss(pData, tp, mss); /* sets t_maxseg */ 1760 #else /* !VBOX */1761 (void) tcp_mss(tp, mss); /* sets t_maxseg */1762 #endif /* !VBOX */1763 1514 break; 1764 1515 … … 1840 1591 1841 1592 void 1842 #ifdef VBOX1843 1593 tcp_xmit_timer(PNATState pData, register struct tcpcb *tp, int rtt) 1844 #else /* !VBOX */1845 tcp_xmit_timer(tp, rtt)1846 register struct tcpcb *tp;1847 int rtt;1848 #endif /* !VBOX */1849 1594 { 1850 1595 register short delta; … … 1934 1679 1935 1680 int 1936 #ifdef VBOX1937 1681 tcp_mss(PNATState pData, register struct tcpcb *tp, u_int offer) 1938 #else /* !VBOX */1939 tcp_mss(tp, offer)1940 register struct tcpcb *tp;1941 u_int offer;1942 #endif /* !VBOX */1943 1682 { 1944 1683 struct socket *so = tp->t_socket; -
trunk/src/VBox/Devices/Network/slirp/tcp_output.c
r1033 r1076 49 49 * names instead of the REAL names 50 50 */ 51 #ifdef VBOX52 51 const char * const tcpstates[] = { 53 #else /* !VBOX */54 char *tcpstates[] = {55 #endif /* !VBOX */56 52 /* "CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD", */ 57 53 "REDIRECT", "LISTEN", "SYN_SENT", "SYN_RCVD", … … 60 56 }; 61 57 62 #ifdef VBOX63 58 static const u_char tcp_outflags[TCP_NSTATES] = { 64 #else /* !VBOX */65 u_char tcp_outflags[TCP_NSTATES] = {66 #endif /* !VBOX */67 59 TH_RST|TH_ACK, 0, TH_SYN, TH_SYN|TH_ACK, 68 60 TH_ACK, TH_ACK, TH_FIN|TH_ACK, TH_FIN|TH_ACK, … … 77 69 */ 78 70 int 79 #ifdef VBOX80 71 tcp_output(PNATState pData, register struct tcpcb *tp) 81 #else /* !VBOX */82 tcp_output(tp)83 register struct tcpcb *tp;84 #endif /* !VBOX */85 72 { 86 73 register struct socket *so = tp->t_socket; … … 298 285 opt[0] = TCPOPT_MAXSEG; 299 286 opt[1] = 4; 300 #ifdef VBOX301 287 mss = htons((u_int16_t) tcp_mss(pData, tp, 0)); 302 #else /* !VBOX */303 mss = htons((u_int16_t) tcp_mss(tp, 0));304 #endif /* !VBOX */305 288 memcpy((caddr_t)(opt + 2), (caddr_t)&mss, sizeof(mss)); 306 289 optlen = 4; … … 365 348 } 366 349 367 #ifdef VBOX368 350 m = m_get(pData); 369 #else /* !VBOX */370 m = m_get();371 #endif /* !VBOX */372 351 if (m == NULL) { 373 352 /* error = ENOBUFS; */ … … 411 390 tcpstat.tcps_sndwinup++; 412 391 413 #ifdef VBOX414 392 m = m_get(pData); 415 #else /* !VBOX */416 m = m_get();417 #endif /* !VBOX */418 393 if (m == NULL) { 419 394 /* error = ENOBUFS; */ … … 569 544 * so->so_options & SO_DONTROUTE, 0); 570 545 */ 571 #ifdef VBOX572 546 error = ip_output(pData, so, m); 573 #else /* !VBOX */574 error = ip_output(so, m);575 #endif /* !VBOX */576 547 577 548 /* #else -
trunk/src/VBox/Devices/Network/slirp/tcp_subr.c
r1052 r1076 46 46 #include <slirp.h> 47 47 48 #ifndef VBOX49 /* patchable/settable parameters for tcp */50 int tcp_mssdflt = TCP_MSS;51 int tcp_rttdflt = TCPTV_SRTTDFLT / PR_SLOWHZ;52 int tcp_do_rfc1323 = 0; /* Don't do rfc1323 performance enhancements */53 int tcp_rcvspace; /* You may want to change this */54 int tcp_sndspace; /* Keep small if you have an error prone link */55 #endif /* !VBOX */56 48 57 49 /* … … 59 51 */ 60 52 void 61 #ifdef VBOX62 53 tcp_init(PNATState pData) 63 #else /* !VBOX */64 tcp_init()65 #endif /* !VBOX */66 54 { 67 55 tcp_iss = 1; /* wrong */ 68 56 tcb.so_next = tcb.so_prev = &tcb; 69 #ifdef VBOX70 57 tcp_last_so = &tcb; 71 #endif /* VBOX */72 73 #ifndef VBOX74 /* tcp_rcvspace = our Window we advertise to the remote */75 tcp_rcvspace = TCP_RCVSPACE;76 tcp_sndspace = TCP_SNDSPACE;77 78 /* Make sure tcp_sndspace is at least 2*MSS */79 if (tcp_sndspace < 2*(min(if_mtu, if_mru) - sizeof(struct tcpiphdr)))80 tcp_sndspace = 2*(min(if_mtu, if_mru) - sizeof(struct tcpiphdr));81 #endif /* !VBOX */82 58 } 83 59 … … 129 105 */ 130 106 void 131 #ifdef VBOX132 107 tcp_respond(PNATState pData, struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m, tcp_seq ack, tcp_seq seq, int flags) 133 #else /* !VBOX */134 tcp_respond(tp, ti, m, ack, seq, flags)135 struct tcpcb *tp;136 register struct tcpiphdr *ti;137 register struct mbuf *m;138 tcp_seq ack, seq;139 int flags;140 #endif /* !VBOX */141 108 { 142 109 register int tlen; … … 154 121 win = sbspace(&tp->t_socket->so_rcv); 155 122 if (m == 0) { 156 #ifdef VBOX157 123 if ((m = m_get(pData)) == NULL) 158 #else /* !VBOX */159 if ((m = m_get()) == NULL)160 #endif /* !VBOX */161 124 return; 162 125 #ifdef TCP_COMPAT_42 … … 208 171 ((struct ip *)ti)->ip_ttl = ip_defttl; 209 172 210 #ifdef VBOX211 173 (void) ip_output(pData, (struct socket *)0, m); 212 #else /* !VBOX */213 (void) ip_output((struct socket *)0, m);214 #endif /* !VBOX */215 174 } 216 175 … … 263 222 * then send a RST to peer. 264 223 */ 265 #ifdef VBOX266 224 struct tcpcb *tcp_drop(PNATState pData, struct tcpcb *tp, int err) 267 #else /* !VBOX */268 struct tcpcb *tcp_drop(struct tcpcb *tp, int err)269 #endif /* !VBOX */270 225 { 271 226 /* tcp_drop(tp, errno) … … 281 236 if (TCPS_HAVERCVDSYN(tp->t_state)) { 282 237 tp->t_state = TCPS_CLOSED; 283 #ifdef VBOX284 238 (void) tcp_output(pData, tp); 285 #else /* !VBOX */286 (void) tcp_output(tp);287 #endif /* !VBOX */288 239 tcpstat.tcps_drops++; 289 240 } else … … 293 244 */ 294 245 /* so->so_error = errno; */ 295 #ifdef VBOX296 246 return (tcp_close(pData, tp)); 297 #else /* !VBOX */298 return (tcp_close(tp));299 #endif /* !VBOX */300 247 } 301 248 … … 307 254 */ 308 255 struct tcpcb * 309 #ifdef VBOX310 256 tcp_close(PNATState pData, register struct tcpcb *tp) 311 #else /* !VBOX */312 tcp_close(tp)313 register struct tcpcb *tp;314 #endif /* !VBOX */315 257 { 316 258 register struct tcpiphdr *t; … … 327 269 m = REASS_MBUF_GET(u32_to_ptr(pData, t->ti_prev, struct tcpiphdr *)); 328 270 remque_32(pData, u32_to_ptr(pData, t->ti_prev, struct tcpiphdr *)); 329 #ifdef VBOX330 271 m_freem(pData, m); 331 #else /* !VBOX */332 m_freem(m);333 #endif /* !VBOX */334 272 } 335 273 /* It's static */ … … 348 286 sbfree(&so->so_rcv); 349 287 sbfree(&so->so_snd); 350 #ifdef VBOX351 288 sofree(pData, so); 352 #else /* !VBOX */353 sofree(so);354 #endif /* !VBOX */355 289 tcpstat.tcps_closed++; 356 290 return ((struct tcpcb *)0); … … 398 332 */ 399 333 void 400 #ifdef VBOX401 334 tcp_sockclosed(PNATState pData, struct tcpcb *tp) 402 #else /* !VBOX */403 tcp_sockclosed(tp)404 struct tcpcb *tp;405 #endif /* !VBOX */406 335 { 407 336 … … 415 344 case TCPS_SYN_SENT: 416 345 tp->t_state = TCPS_CLOSED; 417 #ifdef VBOX418 346 tp = tcp_close(pData, tp); 419 #else /* !VBOX */420 tp = tcp_close(tp);421 #endif /* !VBOX */422 347 break; 423 348 … … 435 360 soisfdisconnected(tp->t_socket); 436 361 if (tp) 437 #ifdef VBOX438 362 tcp_output(pData, tp); 439 #else /* !VBOX */440 tcp_output(tp);441 #endif /* !VBOX */442 363 } 443 364 … … 452 373 * not wait for ACK+SYN. 453 374 */ 454 #ifdef VBOX455 375 int tcp_fconnect(PNATState pData, struct socket *so) 456 #else /* !VBOX */457 int tcp_fconnect(so)458 struct socket *so;459 #endif /* !VBOX */460 376 { 461 377 int ret=0; … … 519 435 */ 520 436 void 521 #ifdef VBOX522 437 tcp_connect(PNATState pData, struct socket *inso) 523 #else /* !VBOX */524 tcp_connect(inso)525 struct socket *inso;526 #endif /* !VBOX */527 438 { 528 439 struct socket *so; 529 440 struct sockaddr_in addr; 530 #ifndef VBOX531 int addrlen = sizeof(struct sockaddr_in);532 #else /* VBOX */533 441 socklen_t addrlen = sizeof(struct sockaddr_in); 534 #endif /* VBOX */535 442 struct tcpcb *tp; 536 443 int s, opt; … … 552 459 return; 553 460 } 554 #ifdef VBOX555 461 if (tcp_attach(pData, so) < 0) { 556 #else /* !VBOX */557 if (tcp_attach(so) < 0) {558 #endif /* !VBOX */559 462 free(so); /* NOT sofree */ 560 463 return; … … 564 467 } 565 468 566 #ifdef VBOX567 469 (void) tcp_mss(pData, sototcpcb(so), 0); 568 #else /* !VBOX */569 (void) tcp_mss(sototcpcb(so), 0);570 #endif /* !VBOX */571 470 572 471 if ((s = accept(inso->s,(struct sockaddr *)&addr,&addrlen)) < 0) { 573 #ifdef VBOX574 472 tcp_close(pData, sototcpcb(so)); /* This will sofree() as well */ 575 #else /* !VBOX */576 tcp_close(sototcpcb(so)); /* This will sofree() as well */577 #endif /* !VBOX */578 473 return; 579 474 } … … 619 514 tcp_iss += TCP_ISSINCR/2; 620 515 tcp_sendseqinit(tp); 621 #ifdef VBOX622 516 tcp_output(pData, tp); 623 #else /* !VBOX */624 tcp_output(tp);625 #endif /* !VBOX */626 517 } 627 518 … … 630 521 */ 631 522 int 632 #ifdef VBOX633 523 tcp_attach(PNATState pData, struct socket *so) 634 #else /* !VBOX */635 tcp_attach(so)636 struct socket *so;637 #endif /* !VBOX */638 524 { 639 525 if ((so->so_tcpcb = tcp_newtcpcb(pData, so)) == NULL) … … 648 534 * Set the socket's type of service field 649 535 */ 650 #ifdef VBOX651 536 static const struct tos_t tcptos[] = { 652 #else /* !VBOX */653 struct tos_t tcptos[] = {654 #endif /* !VBOX */655 537 {0, 20, IPTOS_THROUGHPUT, 0}, /* ftp data */ 656 538 {21, 21, IPTOS_LOWDELAY, EMU_FTP}, /* ftp control */ … … 668 550 }; 669 551 670 #ifndef VBOX671 struct emu_t *tcpemu = 0;672 #endif /* !VBOX */673 674 552 /* 675 553 * Return TOS according to the above table … … 680 558 { 681 559 int i = 0; 682 #ifndef VBOX683 struct emu_t *emup;684 #endif /* !VBOX */685 560 686 561 while(tcptos[i].tos) { … … 693 568 } 694 569 695 #ifdef VBOX696 /* No user-added emulators supported. */697 #else /* !VBOX */698 /* Nope, lets see if there's a user-added one */699 for (emup = tcpemu; emup; emup = emup->next) {700 if ((emup->fport && (ntohs(so->so_fport) == emup->fport)) ||701 (emup->lport && (ntohs(so->so_lport) == emup->lport))) {702 so->so_emu = emup->emu;703 return emup->tos;704 }705 }706 #endif /* !VBOX */707 708 570 return 0; 709 571 } 710 711 #ifndef VBOX712 int do_echo = -1;713 #endif /* !VBOX */714 572 715 573 /* … … 738 596 */ 739 597 int 740 #ifdef VBOX741 598 tcp_emu(PNATState pData, struct socket *so, struct mbuf *m) 742 #else /* !VBOX */743 tcp_emu(so, m)744 struct socket *so;745 struct mbuf *m;746 #endif /* !VBOX */747 599 { 748 600 u_int n1, n2, n3, n4, n5, n6; … … 767 619 struct socket *tmpso; 768 620 struct sockaddr_in addr; 769 #ifndef VBOX770 int addrlen = sizeof(struct sockaddr_in);771 #else /* VBOX */772 621 socklen_t addrlen = sizeof(struct sockaddr_in); 773 #endif /* VBOX */774 622 struct sbuf *so_rcv = &so->so_rcv; 775 623 … … 779 627 m->m_data[m->m_len] = 0; /* NULL terminate */ 780 628 if (strchr(m->m_data, '\r') || strchr(m->m_data, '\n')) { 781 #ifdef VBOX782 629 if (sscanf(so_rcv->sb_data, "%u%*[ ,]%u", &n1, &n2) == 2) { 783 #else784 if (sscanf(so_rcv->sb_data, "%d%*[ ,]%d", &n1, &n2) == 2) {785 #endif786 630 HTONS(n1); 787 631 HTONS(n2); … … 803 647 so_rcv->sb_wptr = so_rcv->sb_data + so_rcv->sb_cc; 804 648 } 805 #ifdef VBOX806 649 m_free(pData, m); 807 #else /* !VBOX */808 m_free(m);809 #endif /* !VBOX */810 650 return 0; 811 651 } … … 1113 953 * Need to emulate the PORT command 1114 954 */ 1115 #ifdef VBOX1116 955 x = sscanf(bptr, "ORT %u,%u,%u,%u,%u,%u\r\n%256[^\177]", 1117 956 &n1, &n2, &n3, &n4, &n5, &n6, buff); 1118 #else1119 x = sscanf(bptr, "ORT %d,%d,%d,%d,%d,%d\r\n%256[^\177]",1120 &n1, &n2, &n3, &n4, &n5, &n6, buff);1121 #endif1122 957 if (x < 6) 1123 958 return 1; … … 1126 961 lport = htons((n5 << 8) | (n6)); 1127 962 1128 #ifdef VBOX1129 963 if ((so = solisten(pData, 0, laddr, lport, SS_FACCEPTONCE)) == NULL) 1130 #else /* !VBOX */1131 if ((so = solisten(0, laddr, lport, SS_FACCEPTONCE)) == NULL)1132 #endif /* !VBOX */1133 964 return 1; 1134 965 … … 1153 984 * Need to emulate the PASV response 1154 985 */ 1155 #ifdef VBOX1156 986 x = sscanf(bptr, "27 Entering Passive Mode (%u,%u,%u,%u,%u,%u)\r\n%256[^\177]", 1157 987 &n1, &n2, &n3, &n4, &n5, &n6, buff); 1158 #else1159 x = sscanf(bptr, "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%256[^\177]",1160 &n1, &n2, &n3, &n4, &n5, &n6, buff);1161 #endif1162 988 if (x < 6) 1163 989 return 1; … … 1166 992 lport = htons((n5 << 8) | (n6)); 1167 993 1168 #ifdef VBOX1169 994 if ((so = solisten(pData, 0, laddr, lport, SS_FACCEPTONCE)) == NULL) 1170 #else /* !VBOX */1171 if ((so = solisten(0, laddr, lport, SS_FACCEPTONCE)) == NULL)1172 #endif /* !VBOX */1173 995 return 1; 1174 996 … … 1209 1031 } 1210 1032 if (m->m_data[m->m_len-1] == '\0' && lport != 0 && 1211 #ifdef VBOX1212 1033 (so = solisten(pData, 0, so->so_laddr.s_addr, htons(lport), SS_FACCEPTONCE)) != NULL) 1213 #else /* !VBOX */1214 (so = solisten(0, so->so_laddr.s_addr, htons(lport), SS_FACCEPTONCE)) != NULL)1215 #endif /* !VBOX */1216 1034 m->m_len = sprintf(m->m_data, "%d", ntohs(so->so_fport))+1; 1217 1035 return 1; … … 1227 1045 /* The %256s is for the broken mIRC */ 1228 1046 if (sscanf(bptr, "DCC CHAT %256s %u %u", buff, &laddr, &lport) == 3) { 1229 #ifdef VBOX1230 1047 if ((so = solisten(pData, 0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL) 1231 #else /* !VBOX */1232 if ((so = solisten(0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL)1233 #endif /* !VBOX */1234 1048 return 1; 1235 1049 … … 1239 1053 ntohs(so->so_fport), 1); 1240 1054 } else if (sscanf(bptr, "DCC SEND %256s %u %u %u", buff, &laddr, &lport, &n1) == 4) { 1241 #ifdef VBOX1242 1055 if ((so = solisten(pData, 0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL) 1243 #else /* !VBOX */1244 if ((so = solisten(0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL)1245 #endif /* !VBOX */1246 1056 return 1; 1247 1057 … … 1251 1061 ntohs(so->so_fport), n1, 1); 1252 1062 } else if (sscanf(bptr, "DCC MOVE %256s %u %u %u", buff, &laddr, &lport, &n1) == 4) { 1253 #ifdef VBOX1254 1063 if ((so = solisten(pData, 0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL) 1255 #else /* !VBOX */1256 if ((so = solisten(0, htonl(laddr), htons(lport), SS_FACCEPTONCE)) == NULL)1257 #endif /* !VBOX */1258 1064 return 1; 1259 1065 … … 1409 1215 */ 1410 1216 int 1411 #ifdef VBOX1412 1217 tcp_ctl(PNATState pData, struct socket *so) 1413 #else /* !VBOX */1414 tcp_ctl(so)1415 struct socket *so;1416 #endif /* !VBOX */1417 1218 { 1418 1219 struct sbuf *sb = &so->so_snd; … … 1465 1266 do_exec: 1466 1267 DEBUG_MISC((dfd, " executing %s \n",ex_ptr->ex_exec)); 1467 #ifdef VBOX1468 1268 return(fork_exec(pData, so, ex_ptr->ex_exec, do_pty)); 1469 #else /* !VBOX */1470 return(fork_exec(so, ex_ptr->ex_exec, do_pty));1471 #endif /* !VBOX */1472 1269 1473 1270 #if 0 … … 1494 1291 } 1495 1292 1496 #if defined(VBOX) &&SIZEOF_CHAR_P != 41293 #if SIZEOF_CHAR_P != 4 1497 1294 /** 1498 1295 * Slow pointer hashing that deals with automatic inserting and collisions. -
trunk/src/VBox/Devices/Network/slirp/tcp_timer.c
r1033 r1076 37 37 #include <slirp.h> 38 38 39 #ifndef VBOX40 int tcp_keepidle = TCPTV_KEEP_IDLE;41 int tcp_keepintvl = TCPTV_KEEPINTVL;42 int tcp_maxidle;43 int so_options = DO_KEEPALIVE;44 45 struct tcpstat tcpstat; /* tcp statistics */46 u_int32_t tcp_now; /* for RFC 1323 timestamps */47 #endif /* !VBOX */48 39 49 40 /* … … 51 42 */ 52 43 void 53 #ifdef VBOX54 44 tcp_fasttimo(PNATState pData) 55 #else /* !VBOX */56 tcp_fasttimo()57 #endif /* !VBOX */58 45 { 59 46 register struct socket *so; … … 70 57 tp->t_flags |= TF_ACKNOW; 71 58 tcpstat.tcps_delack++; 72 #ifdef VBOX73 59 (void) tcp_output(pData, tp); 74 #else /*! VBOX */75 (void) tcp_output(tp);76 #endif /* !VBOX */77 60 } 78 61 } … … 84 67 */ 85 68 void 86 #ifdef VBOX87 69 tcp_slowtimo(PNATState pData) 88 #else /* !VBOX */89 tcp_slowtimo()90 #endif /* !VBOX */91 70 { 92 71 register struct socket *ip, *ipnxt; … … 96 75 DEBUG_CALL("tcp_slowtimo"); 97 76 98 #ifndef VBOX99 tcp_maxidle = TCPTV_KEEPCNT * tcp_keepintvl;100 #endif /* !VBOX */101 77 /* 102 78 * Search through tcb's and update active timers. … … 112 88 for (i = 0; i < TCPT_NTIMERS; i++) { 113 89 if (tp->t_timer[i] && --tp->t_timer[i] == 0) { 114 #ifdef VBOX115 90 tcp_timers(pData, tp,i); 116 #else /* !VBOX */117 tcp_timers(tp,i);118 #endif /* !VBOX */119 91 if (ipnxt->so_prev != ip) 120 92 goto tpgone; … … 148 120 } 149 121 150 #ifdef VBOX151 122 const int tcp_backoff[TCP_MAXRXTSHIFT + 1] = 152 #else /* !VBOX */153 int tcp_backoff[TCP_MAXRXTSHIFT + 1] =154 #endif /* !VBOX */155 123 { 1, 2, 4, 8, 16, 32, 64, 64, 64, 64, 64, 64, 64 }; 156 124 … … 159 127 */ 160 128 struct tcpcb * 161 #ifdef VBOX162 129 tcp_timers(PNATState pData, register struct tcpcb *tp, int timer) 163 #else /* !VBOX */164 tcp_timers(tp, timer)165 register struct tcpcb *tp;166 int timer;167 #endif /* !VBOX */168 130 { 169 131 register int rexmt; … … 184 146 tp->t_timer[TCPT_2MSL] = tcp_keepintvl; 185 147 else 186 #ifdef VBOX187 148 tp = tcp_close(pData, tp); 188 #else /* !VBOX */189 tp = tcp_close(tp);190 #endif /* !VBOX */191 149 break; 192 150 … … 226 184 tp->t_rxtshift = TCP_MAXRXTSHIFT; 227 185 tcpstat.tcps_timeoutdrop++; 228 #ifdef VBOX229 186 tp = tcp_drop(pData, tp, tp->t_softerror); 230 #else /* !VBOX */231 tp = tcp_drop(tp, tp->t_softerror);232 #endif /* !VBOX */233 187 /* tp->t_softerror : ETIMEDOUT); */ /* XXX */ 234 188 return (tp); /* XXX */ … … 296 250 tp->t_dupacks = 0; 297 251 } 298 #ifdef VBOX299 252 (void) tcp_output(pData, tp); 300 #else /* !VBOX */301 (void) tcp_output(tp);302 #endif /* !VBOX */303 253 break; 304 254 … … 311 261 tcp_setpersist(tp); 312 262 tp->t_force = 1; 313 #ifdef VBOX314 263 (void) tcp_output(pData, tp); 315 #else /* !VBOX */316 (void) tcp_output(tp);317 #endif /* !VBOX */318 264 tp->t_force = 0; 319 265 break; … … 353 299 tp->rcv_nxt - 1, tp->snd_una - 1, 0); 354 300 #else 355 #ifdef VBOX356 301 tcp_respond(pData, tp, &tp->t_template, (struct mbuf *)NULL, 357 302 tp->rcv_nxt, tp->snd_una - 1, 0); 358 #else /* !VBOX */359 tcp_respond(tp, &tp->t_template, (struct mbuf *)NULL,360 tp->rcv_nxt, tp->snd_una - 1, 0);361 #endif /* !VBOX */362 303 #endif 363 304 tp->t_timer[TCPT_KEEP] = tcp_keepintvl; … … 368 309 dropit: 369 310 tcpstat.tcps_keepdrops++; 370 #ifdef VBOX371 311 tp = tcp_drop(pData, tp, 0); /* ETIMEDOUT); */ 372 #else /* !VBOX */373 tp = tcp_drop(tp, 0); /* ETIMEDOUT); */374 #endif /* !VBOX */375 312 break; 376 313 } -
trunk/src/VBox/Devices/Network/slirp/tcp_timer.h
r1033 r1076 127 127 } 128 128 129 #ifndef VBOX130 extern int tcp_keepidle; /* time before keepalive probes begin */131 extern int tcp_keepintvl; /* time between keepalive probes */132 extern int tcp_maxidle; /* time to drop after starting probes */133 #endif /* !VBOX */134 extern int tcp_ttl; /* time to live for TCP segs */135 #ifdef VBOX136 129 extern const int tcp_backoff[]; 137 #else /* !VBOX */138 extern int tcp_backoff[];139 #endif /* !VBOX */140 130 141 131 struct tcpcb; 142 132 143 #ifdef VBOX144 133 void tcp_fasttimo _P((PNATState)); 145 134 void tcp_slowtimo _P((PNATState)); 146 #else /* !VBOX */147 void tcp_fasttimo _P((void));148 void tcp_slowtimo _P((void));149 #endif /* !VBOX */150 135 void tcp_canceltimers _P((struct tcpcb *)); 151 #ifdef VBOX152 136 struct tcpcb * tcp_timers _P((PNATState, register struct tcpcb *, int)); 153 #else /* !VBOX */154 struct tcpcb * tcp_timers _P((register struct tcpcb *, int));155 #endif /* !VBOX */156 137 157 138 #endif -
trunk/src/VBox/Devices/Network/slirp/tcp_var.h
r1051 r1076 43 43 #if SIZEOF_CHAR_P == 4 44 44 typedef struct tcpiphdr *tcpiphdrp_32; 45 /* VBox change that's to much bother to #ifdef. */46 45 # define u32ptr_done(pData, u32, ptr) do {} while (0) 47 46 # define ptr_to_u32(pData, ptr) (ptr) … … 49 48 #else 50 49 typedef u_int32_t tcpiphdrp_32; 51 # ifdef VBOX 52 # include <iprt/types.h> 53 # include <iprt/assert.h> 54 55 /* VBox change that's to much bother to #ifdef. */ 56 # define u32ptr_done(pData, u32, ptr) VBoxU32PtrDone((pData), (ptr), (u32)) 57 # define ptr_to_u32(pData, ptr) VBoxU32PtrHash((pData), (ptr)) 58 # define u32_to_ptr(pData, u32, type) ((type)VBoxU32PtrLookup((pData), (u32))) 59 60 # else /* !VBOX */ 61 /* VBox change that's to much bother to #ifdef. */ 62 # define u32ptr_done(u32, ptr) do {} while (0) 63 # define ptr_to_u32(ptr) (ptr) 64 # define u32_to_ptr(u32, type) ((type)(u32)) 65 # endif /* !VBOX */ 50 # include <iprt/types.h> 51 # include <iprt/assert.h> 52 53 # define u32ptr_done(pData, u32, ptr) VBoxU32PtrDone((pData), (ptr), (u32)) 54 # define ptr_to_u32(pData, ptr) VBoxU32PtrHash((pData), (ptr)) 55 # define u32_to_ptr(pData, u32, type) ((type)VBoxU32PtrLookup((pData), (u32))) 56 66 57 #endif 67 58 … … 216 207 * but that's inconvenient at the moment. 217 208 */ 218 #ifdef VBOX219 209 struct tcpstat_t { 220 #else /* !VBOX */221 struct tcpstat {222 #endif /* !VBOX */223 210 u_long tcps_connattempt; /* connections initiated */ 224 211 u_long tcps_accepts; /* connections accepted */ … … 276 263 }; 277 264 278 #ifndef VBOX279 extern struct tcpstat tcpstat; /* tcp statistics */280 extern u_int32_t tcp_now; /* for RFC 1323 timestamps */281 #endif /* !VBOX */282 265 283 266 #endif -
trunk/src/VBox/Devices/Network/slirp/tftp.c
r1033 r1076 25 25 #include <slirp.h> 26 26 27 #ifndef VBOX 28 struct tftp_session { 29 int in_use; 30 unsigned char filename[TFTP_FILENAME_MAX]; 31 32 struct in_addr client_ip; 33 u_int16_t client_port; 34 35 int timestamp; 36 }; 37 38 struct tftp_session tftp_sessions[TFTP_SESSIONS_MAX]; 39 40 const char *tftp_prefix; 41 #endif /* !VBOX */ 42 43 #ifdef VBOX 27 44 28 static void tftp_session_update(PNATState pData, struct tftp_session *spt) 45 #else /* !VBOX */46 static void tftp_session_update(struct tftp_session *spt)47 #endif /* !VBOX */48 29 { 49 30 spt->timestamp = curtime; … … 56 37 } 57 38 58 #ifdef VBOX59 39 static int tftp_session_allocate(PNATState pData, struct tftp_t *tp) 60 #else /* !VBOX */61 static int tftp_session_allocate(struct tftp_t *tp)62 #endif /* !VBOX */63 40 { 64 41 struct tftp_session *spt; … … 83 60 spt->client_port = tp->udp.uh_sport; 84 61 85 #ifdef VBOX86 62 tftp_session_update(pData, spt); 87 #else /* !VBOX */88 tftp_session_update(spt);89 #endif /* !VBOX */90 63 91 64 return k; 92 65 } 93 66 94 #ifdef VBOX95 67 static int tftp_session_find(PNATState pData, struct tftp_t *tp) 96 #else /* !VBOX */97 static int tftp_session_find(struct tftp_t *tp)98 #endif /* !VBOX */99 68 { 100 69 struct tftp_session *spt; … … 116 85 } 117 86 118 #ifdef VBOX119 87 static int tftp_read_data(PNATState pData, struct tftp_session *spt, u_int16_t block_nr, 120 88 u_int8_t *buf, int len) 121 #else /* !VBOX */122 static int tftp_read_data(struct tftp_session *spt, u_int16_t block_nr,123 u_int8_t *buf, int len)124 #endif /* !VBOX */125 89 { 126 90 int fd; … … 129 93 int n; 130 94 131 #ifndef VBOX132 n = snprintf(buffer, sizeof(buffer), "%s/%s",133 tftp_prefix, spt->filename);134 #else135 95 n = RTStrPrintf(buffer, sizeof(buffer), "%s/%s", 136 96 tftp_prefix, spt->filename); 137 #endif138 97 if (n >= sizeof(buffer)) 139 98 return -1; … … 156 115 } 157 116 158 #ifdef VBOX159 117 static int tftp_send_oack(PNATState pData, 160 118 struct tftp_session *spt, 161 119 const char *key, uint32_t value, 162 120 struct tftp_t *recv_tp) 163 #else /* !VBOX */164 static int tftp_send_oack(struct tftp_session *spt,165 const char *key, uint32_t value,166 struct tftp_t *recv_tp)167 #endif /* !VBOX */168 121 { 169 122 struct sockaddr_in saddr, daddr; … … 172 125 int n = 0; 173 126 174 #ifdef VBOX175 127 m = m_get(pData); 176 #else /* !VBOX */177 m = m_get();178 #endif /* !VBOX */179 128 180 129 if (!m) … … 188 137 189 138 tp->tp_op = htons(TFTP_OACK); 190 #ifdef VBOX191 139 n += sprintf((char *)tp->x.tp_buf + n, "%s", key) + 1; 192 140 n += sprintf((char *)tp->x.tp_buf + n, "%u", value) + 1; 193 #else /* !VBOX */194 n += sprintf(tp->x.tp_buf + n, "%s", key) + 1;195 n += sprintf(tp->x.tp_buf + n, "%u", value) + 1;196 #endif /* !VBOX */197 141 198 142 saddr.sin_addr = recv_tp->ip.ip_dst; … … 204 148 m->m_len = sizeof(struct tftp_t) - 514 + n - 205 149 sizeof(struct ip) - sizeof(struct udphdr); 206 #ifdef VBOX207 150 udp_output2(pData, NULL, m, &saddr, &daddr, IPTOS_LOWDELAY); 208 #else /* !VBOX */209 udp_output2(NULL, m, &saddr, &daddr, IPTOS_LOWDELAY);210 #endif /* !VBOX */211 151 212 152 return 0; … … 215 155 216 156 217 #ifdef VBOX218 157 static int tftp_send_error(PNATState pData, 219 158 struct tftp_session *spt, 220 159 u_int16_t errorcode, const char *msg, 221 160 struct tftp_t *recv_tp) 222 #else /* !VBOX */223 static int tftp_send_error(struct tftp_session *spt,224 u_int16_t errorcode, const char *msg,225 struct tftp_t *recv_tp)226 #endif /* !VBOX */227 161 { 228 162 struct sockaddr_in saddr, daddr; … … 231 165 int nobytes; 232 166 233 #ifdef VBOX234 167 m = m_get(pData); 235 #else /* !VBOX */236 m = m_get();237 #endif /* !VBOX */238 168 239 169 if (!m) { … … 249 179 tp->tp_op = htons(TFTP_ERROR); 250 180 tp->x.tp_error.tp_error_code = htons(errorcode); 251 #ifndef VBOX252 strcpy(tp->x.tp_error.tp_msg, msg);253 #else /* VBOX */254 181 strcpy((char *)tp->x.tp_error.tp_msg, msg); 255 #endif /* VBOX */256 182 257 183 saddr.sin_addr = recv_tp->ip.ip_dst; … … 266 192 sizeof(struct ip) - sizeof(struct udphdr); 267 193 268 #ifdef VBOX269 194 udp_output2(pData, NULL, m, &saddr, &daddr, IPTOS_LOWDELAY); 270 #else /* !VBOX */271 udp_output2(NULL, m, &saddr, &daddr, IPTOS_LOWDELAY);272 #endif /* !VBOX */273 195 274 196 tftp_session_terminate(spt); … … 277 199 } 278 200 279 #ifdef VBOX280 201 static int tftp_send_data(PNATState pData, 281 202 struct tftp_session *spt, 282 203 u_int16_t block_nr, 283 204 struct tftp_t *recv_tp) 284 #else /* !VBOX */285 static int tftp_send_data(struct tftp_session *spt,286 u_int16_t block_nr,287 struct tftp_t *recv_tp)288 #endif /* !VBOX */289 205 { 290 206 struct sockaddr_in saddr, daddr; … … 297 213 } 298 214 299 #ifdef VBOX300 215 m = m_get(pData); 301 #else /* !VBOX */302 m = m_get();303 #endif /* !VBOX */304 216 305 217 if (!m) { … … 322 234 daddr.sin_port = spt->client_port; 323 235 324 #ifdef VBOX325 236 nobytes = tftp_read_data(pData, spt, block_nr - 1, tp->x.tp_data.tp_buf, 512); 326 #else /* !VBOX */327 nobytes = tftp_read_data(spt, block_nr - 1, tp->x.tp_data.tp_buf, 512);328 #endif /* !VBOX */329 237 330 238 if (nobytes < 0) { 331 #ifdef VBOX332 239 m_free(pData, m); 333 #else /* !VBOX */334 m_free(m);335 #endif /* !VBOX */336 240 337 241 /* send "file not found" error back */ 338 242 339 #ifdef VBOX340 243 tftp_send_error(pData, spt, 1, "File not found", tp); 341 #else /* !VBOX */342 tftp_send_error(spt, 1, "File not found", tp);343 #endif /* !VBOX */344 244 345 245 return -1; … … 349 249 sizeof(struct ip) - sizeof(struct udphdr); 350 250 351 #ifdef VBOX352 251 udp_output2(pData, NULL, m, &saddr, &daddr, IPTOS_LOWDELAY); 353 #else /* !VBOX */354 udp_output2(NULL, m, &saddr, &daddr, IPTOS_LOWDELAY);355 #endif /* !VBOX */356 252 357 253 if (nobytes == 512) { 358 #ifdef VBOX359 254 tftp_session_update(pData, spt); 360 #else /* !VBOX */361 tftp_session_update(spt);362 #endif /* !VBOX */363 255 } 364 256 else { … … 369 261 } 370 262 371 #ifdef VBOX372 263 static void tftp_handle_rrq(PNATState pData, struct tftp_t *tp, int pktlen) 373 #else /* !VBOX */374 static void tftp_handle_rrq(struct tftp_t *tp, int pktlen)375 #endif /* !VBOX */376 264 { 377 265 struct tftp_session *spt; … … 379 267 u_int8_t *src, *dst; 380 268 381 #ifdef VBOX382 269 s = tftp_session_allocate(pData, tp); 383 #else /* !VBOX */384 s = tftp_session_allocate(tp);385 #endif /* !VBOX */386 270 387 271 if (s < 0) { … … 422 306 423 307 if (memcmp(&src[k], "octet\0", 6) != 0) { 424 #ifdef VBOX425 308 tftp_send_error(pData, spt, 4, "Unsupported transfer mode", tp); 426 #else /* !VBOX */427 tftp_send_error(spt, 4, "Unsupported transfer mode", tp);428 #endif /* !VBOX */429 309 return; 430 310 } … … 434 314 /* do sanity checks on the filename */ 435 315 436 #ifndef VBOX437 if ((spt->filename[0] != '/')438 || (spt->filename[strlen(spt->filename) - 1] == '/')439 || strstr(spt->filename, "/../")) {440 tftp_send_error(spt, 2, "Access violation", tp);441 #else /* VBOX */442 316 if ((spt->filename[0] != '/') 443 317 || (spt->filename[strlen((const char *)spt->filename) - 1] == '/') 444 318 || strstr((char *)spt->filename, "/../")) { 445 319 tftp_send_error(pData, spt, 2, "Access violation", tp); 446 #endif /* VBOX */447 320 return; 448 321 } … … 451 324 452 325 if (!tftp_prefix) { 453 #ifdef VBOX454 326 tftp_send_error(pData, spt, 2, "Access violation", tp); 455 #else /* !VBOX */456 tftp_send_error(spt, 2, "Access violation", tp);457 #endif /* !VBOX */458 327 return; 459 328 } … … 461 330 /* check if the file exists */ 462 331 463 #ifdef VBOX464 332 if (tftp_read_data(pData, spt, 0, spt->filename, 0) < 0) { 465 333 tftp_send_error(pData, spt, 1, "File not found", tp); 466 #else /* !VBOX */467 if (tftp_read_data(spt, 0, spt->filename, 0) < 0) {468 tftp_send_error(spt, 1, "File not found", tp);469 #endif /* !VBOX */470 334 return; 471 335 } 472 336 473 337 if (src[n - 1] != 0) { 474 #ifdef VBOX475 338 tftp_send_error(pData, spt, 2, "Access violation", tp); 476 #else /* !VBOX */477 tftp_send_error(spt, 2, "Access violation", tp);478 #endif /* !VBOX */479 339 return; 480 340 } … … 483 343 const char *key, *value; 484 344 485 #ifdef VBOX486 345 key = (const char *)src + k; 487 #else /* !VBOX */488 key = src + k;489 #endif /* !VBOX */490 346 k += strlen(key) + 1; 491 347 492 348 if (k >= n) { 493 #ifdef VBOX494 349 tftp_send_error(pData, spt, 2, "Access violation", tp); 495 #else /* !VBOX */496 tftp_send_error(spt, 2, "Access violation", tp);497 #endif /* !VBOX */498 350 return; 499 351 } 500 352 501 #ifdef VBOX502 353 value = (const char *)src + k; 503 #else /* !VBOX */504 value = src + k;505 #endif /* !VBOX */506 354 k += strlen(value) + 1; 507 355 … … 514 362 int len; 515 363 516 #ifndef VBOX517 len = snprintf(buffer, sizeof(buffer), "%s/%s",518 tftp_prefix, spt->filename);519 #else520 364 len = RTStrPrintf(buffer, sizeof(buffer), "%s/%s", 521 365 tftp_prefix, spt->filename); 522 #endif523 366 524 367 if (stat(buffer, &stat_p) == 0) 525 368 tsize = stat_p.st_size; 526 369 else { 527 #ifdef VBOX528 370 tftp_send_error(pData, spt, 1, "File not found", tp); 529 #else /* !VBOX */530 tftp_send_error(spt, 1, "File not found", tp);531 #endif /* !VBOX */532 371 return; 533 372 } 534 373 } 535 374 536 #ifdef VBOX537 375 tftp_send_oack(pData, spt, "tsize", tsize, tp); 538 #else /* !VBOX */539 tftp_send_oack(spt, "tsize", tsize, tp);540 #endif /* !VBOX */541 376 } 542 377 } 543 378 544 #ifdef VBOX545 379 tftp_send_data(pData, spt, 1, tp); 546 #else /* !VBOX */ 547 tftp_send_data(spt, 1, tp); 548 #endif /* !VBOX */ 549 } 550 551 #ifdef VBOX 380 } 381 552 382 static void tftp_handle_ack(PNATState pData, struct tftp_t *tp, int pktlen) 553 #else /* !VBOX */554 static void tftp_handle_ack(struct tftp_t *tp, int pktlen)555 #endif /* !VBOX */556 383 { 557 384 int s; 558 385 559 #ifdef VBOX560 386 s = tftp_session_find(pData, tp); 561 #else /* !VBOX */562 s = tftp_session_find(tp);563 #endif /* !VBOX */564 387 565 388 if (s < 0) { … … 567 390 } 568 391 569 #ifdef VBOX570 392 if (tftp_send_data(pData, &tftp_sessions[s], 571 393 ntohs(tp->x.tp_data.tp_block_nr) + 1, 572 394 tp) < 0) { 573 #else /* !VBOX */574 if (tftp_send_data(&tftp_sessions[s],575 ntohs(tp->x.tp_data.tp_block_nr) + 1,576 tp) < 0) {577 #endif /* !VBOX */578 395 return; 579 396 } 580 397 } 581 398 582 #ifdef VBOX583 399 void tftp_input(PNATState pData, struct mbuf *m) 584 #else /* !VBOX */585 void tftp_input(struct mbuf *m)586 #endif /* !VBOX */587 400 { 588 401 struct tftp_t *tp = (struct tftp_t *)m->m_data; … … 590 403 switch(ntohs(tp->tp_op)) { 591 404 case TFTP_RRQ: 592 #ifdef VBOX593 405 tftp_handle_rrq(pData, tp, m->m_len); 594 #else /* !VBOX */595 tftp_handle_rrq(tp, m->m_len);596 #endif /* !VBOX */597 406 break; 598 407 599 408 case TFTP_ACK: 600 #ifdef VBOX601 409 tftp_handle_ack(pData, tp, m->m_len); 602 #else /* !VBOX */603 tftp_handle_ack(tp, m->m_len);604 #endif /* !VBOX */605 410 break; 606 411 } -
trunk/src/VBox/Devices/Network/slirp/tftp.h
r1033 r1076 31 31 }; 32 32 33 #ifdef VBOX34 33 void tftp_input(PNATState pData, struct mbuf *m); 35 #else /* !VBOX */36 void tftp_input(struct mbuf *m);37 #endif /* !VBOX */ -
trunk/src/VBox/Devices/Network/slirp/udp.c
r1048 r1076 46 46 #include "ip_icmp.h" 47 47 48 #ifndef VBOX49 struct udpstat udpstat;50 51 struct socket udb;52 #endif /* !VBOX */53 48 54 49 /* … … 56 51 * Per RFC 768, August, 1980. 57 52 */ 58 #ifdef VBOX59 53 #define udpcksum 1 60 #else /* !VBOX */61 #ifndef COMPAT_4262 int udpcksum = 1;63 #else64 int udpcksum = 0; /* XXX */65 #endif66 #endif /* !VBOX */67 68 #ifndef VBOX69 struct socket *udp_last_so = &udb;70 #endif /* !VBOX */71 54 72 55 void 73 #ifdef VBOX74 56 udp_init(PNATState pData) 75 #else /* !VBOX */ 76 udp_init() 77 #endif /* !VBOX */ 78 { 79 #ifdef VBOX 57 { 80 58 udp_last_so = &udb; 81 #endif /* VBOX */82 59 udb.so_next = udb.so_prev = &udb; 83 60 } 61 84 62 /* m->m_data points at ip packet header 85 63 * m->m_len length ip packet … … 87 65 */ 88 66 void 89 #ifdef VBOX90 67 udp_input(PNATState pData, register struct mbuf *m, int iphlen) 91 #else /* !VBOX */92 udp_input(m, iphlen)93 register struct mbuf *m;94 int iphlen;95 #endif /* !VBOX */96 68 { 97 69 register struct ip *ip; … … 169 141 */ 170 142 if (ntohs(uh->uh_dport) == BOOTP_SERVER) { 171 #ifdef VBOX172 143 bootp_input(pData, m); 173 #else /* !VBOX */174 bootp_input(m);175 #endif /* !VBOX */176 144 goto bad; 177 145 } … … 181 149 */ 182 150 if (ntohs(uh->uh_dport) == TFTP_SERVER) { 183 #ifdef VBOX184 151 tftp_input(pData, m); 185 #else /* !VBOX */186 tftp_input(m);187 #endif /* !VBOX */188 152 goto bad; 189 153 } … … 200 164 if (tmp->so_lport == uh->uh_sport && 201 165 tmp->so_laddr.s_addr == ip->ip_src.s_addr) { 202 #ifndef VBOX /* Move this further down, as it must be done also for the cache hit case. */203 tmp->so_faddr.s_addr = ip->ip_dst.s_addr;204 tmp->so_fport = uh->uh_dport;205 #endif /* !VBOX */206 166 so = tmp; 207 167 break; … … 222 182 */ 223 183 if ((so = socreate()) == NULL) goto bad; 224 #ifdef VBOX225 184 if(udp_attach(pData, so) == -1) { 226 #else /* !VBOX */227 if(udp_attach(so) == -1) {228 #endif /* !VBOX */229 185 DEBUG_MISC((dfd," udp_attach errno = %d-%s\n", 230 186 errno,strerror(errno))); 231 #ifdef VBOX232 187 sofree(pData, so); 233 #else /* !VBOX */234 sofree(so);235 #endif /* !VBOX */236 188 goto bad; 237 189 } … … 264 216 */ 265 217 if (so->so_emu) 266 #ifdef VBOX267 218 udp_emu(pData, so, m); 268 #else /* !VBOX */ 269 udp_emu(so, m); 270 #endif /* !VBOX */ 271 272 #ifdef VBOX 219 273 220 if(sosendto(pData, so,m) == -1) { 274 #else /* !VBOX */275 if(sosendto(so,m) == -1) {276 #endif /* !VBOX */277 221 m->m_len += iphlen; 278 222 m->m_data -= iphlen; 279 223 *ip=save_ip; 280 224 DEBUG_MISC((dfd,"udp tx errno = %d-%s\n",errno,strerror(errno))); 281 #ifdef VBOX282 225 icmp_error(pData, m, ICMP_UNREACH,ICMP_UNREACH_NET, 0,strerror(errno)); 283 #else /* !VBOX */ 284 icmp_error(m, ICMP_UNREACH,ICMP_UNREACH_NET, 0,strerror(errno)); 285 #endif /* !VBOX */ 286 } 287 288 #ifdef VBOX 226 } 227 289 228 m_free(pData, so->so_m); /* used for ICMP if error on sorecvfrom */ 290 #else /* !VBOX */291 m_free(so->so_m); /* used for ICMP if error on sorecvfrom */292 #endif /* !VBOX */293 229 294 230 /* restore the orig mbuf packet */ … … 300 236 return; 301 237 bad: 302 #ifdef VBOX303 238 m_freem(pData, m); 304 #else /* !VBOX */305 m_freem(m);306 #endif /* !VBOX */307 239 /* if (opts) m_freem(opts); */ 308 240 return; 309 241 } 310 242 311 #ifdef VBOX312 243 int udp_output2(PNATState pData, struct socket *so, struct mbuf *m, 313 244 struct sockaddr_in *saddr, struct sockaddr_in *daddr, 314 245 int iptos) 315 #else /* !VBOX */316 int udp_output2(struct socket *so, struct mbuf *m,317 struct sockaddr_in *saddr, struct sockaddr_in *daddr,318 int iptos)319 #endif /* !VBOX */320 246 { 321 247 register struct udpiphdr *ui; … … 365 291 udpstat.udps_opackets++; 366 292 367 #ifdef VBOX368 293 error = ip_output(pData, so, m); 369 #else /* !VBOX */370 error = ip_output(so, m);371 #endif /* !VBOX */372 294 373 295 return (error); 374 296 } 375 297 376 #ifdef VBOX377 298 int udp_output(PNATState pData, struct socket *so, struct mbuf *m, 378 299 struct sockaddr_in *addr) 379 #else /* !VBOX */380 int udp_output(struct socket *so, struct mbuf *m,381 struct sockaddr_in *addr)382 #endif /* !VBOX */383 300 { 384 301 struct sockaddr_in saddr, daddr; … … 393 310 daddr.sin_port = so->so_lport; 394 311 395 #ifdef VBOX396 312 return udp_output2(pData, so, m, &saddr, &daddr, so->so_iptos); 397 #else /* !VBOX */398 return udp_output2(so, m, &saddr, &daddr, so->so_iptos);399 #endif /* !VBOX */400 313 } 401 314 402 315 int 403 #ifdef VBOX404 316 udp_attach(PNATState pData, struct socket *so) 405 #else /* !VBOX */406 udp_attach(so)407 struct socket *so;408 #endif /* !VBPX */409 317 { 410 318 struct sockaddr_in addr; … … 439 347 440 348 void 441 #ifdef VBOX442 349 udp_detach(PNATState pData, struct socket *so) 443 #else /* !VBOX */ 444 udp_detach(so) 445 struct socket *so; 446 #endif /* !VBOX */ 447 { 448 #ifdef VBOX 350 { 449 351 /* Correctly update list if detaching last socket in list. */ 450 352 if (so == udp_last_so) udp_last_so = &udb; 451 #endif /* VBOX */452 353 closesocket(so->s); 453 354 /* if (so->so_m) m_free(so->so_m); done by sofree */ 454 355 455 #ifdef VBOX456 356 sofree(pData, so); 457 #else /* !VBOX */ 458 sofree(so); 459 #endif /* !VBOX */ 460 } 461 462 #ifdef VBOX 357 } 358 463 359 static const struct tos_t udptos[] = { 464 #else /* !VBOX */465 struct tos_t udptos[] = {466 #endif /* !VBOX */467 360 {0, 53, IPTOS_LOWDELAY, 0}, /* DNS */ 468 361 {517, 517, IPTOS_LOWDELAY, EMU_TALK}, /* talk */ … … 498 391 */ 499 392 void 500 #ifdef VBOX501 393 udp_emu(PNATState pData, struct socket *so, struct mbuf *m) 502 #else /* !VBOX */503 udp_emu(so, m)504 struct socket *so;505 struct mbuf *m;506 #endif /* !VBOX */507 394 { 508 395 struct sockaddr_in addr; 509 #ifndef VBOX510 int addrlen = sizeof(addr);511 #else /* VBOX */512 396 socklen_t addrlen = sizeof(addr); 513 #endif /* VBOX */514 397 #ifdef EMULATE_TALK 515 398 CTL_MSG_OLD *omsg; … … 734 617 735 618 struct socket * 736 #ifdef VBOX737 619 udp_listen(PNATState pData, u_int port, u_int32_t laddr, u_int lport, int flags) 738 #else /* !VBOX */739 udp_listen(port, laddr, lport, flags)740 u_int port;741 u_int32_t laddr;742 u_int lport;743 int flags;744 #endif /* !VBOX */745 620 { 746 621 struct sockaddr_in addr; 747 622 struct socket *so; 748 #ifndef VBOX749 int addrlen = sizeof(struct sockaddr_in), opt = 1;750 #else /* VBOX */751 623 socklen_t addrlen = sizeof(struct sockaddr_in); 752 624 int opt = 1; 753 #endif /* VBOX */754 625 755 626 if ((so = socreate()) == NULL) { … … 766 637 767 638 if (bind(so->s,(struct sockaddr *)&addr, addrlen) < 0) { 768 #ifdef VBOX769 639 udp_detach(pData, so); 770 #else /* !VBOX */771 udp_detach(so);772 #endif /* !VBOX */773 640 return NULL; 774 641 } -
trunk/src/VBox/Devices/Network/slirp/udp.h
r1033 r1076 73 73 #define ui_sum ui_u.uh_sum 74 74 75 #ifdef VBOX76 75 struct udpstat_t { 77 #else /* !VBOX */78 struct udpstat {79 #endif /* !VBOX */80 76 /* input statistics: */ 81 77 u_long udps_ipackets; /* total input packets */ … … 101 97 struct mbuf; 102 98 103 #ifdef VBOX104 99 void udp_init _P((PNATState)); 105 100 void udp_input _P((PNATState, register struct mbuf *, int)); … … 107 102 int udp_attach _P((PNATState, struct socket *)); 108 103 void udp_detach _P((PNATState, struct socket *)); 109 #else /* !VBOX */110 void udp_init _P((void));111 void udp_input _P((register struct mbuf *, int));112 int udp_output _P((struct socket *, struct mbuf *, struct sockaddr_in *));113 int udp_attach _P((struct socket *));114 void udp_detach _P((struct socket *));115 #endif /* !VBOX */116 104 u_int8_t udp_tos _P((struct socket *)); 117 #ifdef VBOX118 #else /* !VBOX */119 #endif /* !VBOX */120 #ifdef VBOX121 105 void udp_emu _P((PNATState, struct socket *, struct mbuf *)); 122 106 struct socket * udp_listen _P((PNATState, u_int, u_int32_t, u_int, int)); … … 124 108 struct sockaddr_in *saddr, struct sockaddr_in *daddr, 125 109 int iptos); 126 #else /* !VBOX */127 void udp_emu _P((struct socket *, struct mbuf *));128 struct socket * udp_listen _P((u_int, u_int32_t, u_int, int));129 int udp_output2(struct socket *so, struct mbuf *m,130 struct sockaddr_in *saddr, struct sockaddr_in *daddr,131 int iptos);132 #endif /* !VBOX */133 110 134 111 #endif
Note:
See TracChangeset
for help on using the changeset viewer.