}
}
return;
+#ifdef WITH_UAENET_PCAP
case UAENET_PCAP:
uaenet_trigger (vsd);
return;
+#endif
}
}
inet_aton("10.0.2.15", &a);
slirp_redir (0, sr->dstport, a, sr->dstport);
} else {
+#ifdef HAVE_STRUCT_IN_ADDR_S_UN
a.S_un.S_addr = sr->addr;
+#else
+ a.s_addr = sr->addr;
+#endif
slirp_redir (sr->proto == 1 ? 0 : 1, sr->dstport, a, sr->srcport);
}
}
slirp_start ();
}
return 1;
+#ifdef WITH_UAENET_PCAP
case UAENET_PCAP:
return uaenet_open (vsd, ndd, user, gotfunc, getfunc, promiscuous);
+#endif
}
return 0;
}
uae_sem_destroy (&slirp_sem2);
}
return;
+#ifdef WITH_UAENET_PCAP
case UAENET_PCAP:
return uaenet_close (vsd);
+#endif
}
}
void ethernet_enumerate_free (void)
{
+#ifdef WITH_UAENET_PCAP
uaenet_enumerate_free ();
+#endif
}
bool ethernet_enumerate (struct netdriverdata **nddp, const TCHAR *name)
*nddp = &slirpd;
if (!_tcsicmp (slirpd2.name, name))
*nddp = &slirpd2;
+#ifdef WITH_UAENET_PCAP
if (*nddp == NULL)
*nddp = uaenet_enumerate (name);
+#endif
if (*nddp) {
netmode = (*nddp)->type;
return true;
j = 0;
nddp[j++] = &slirpd;
nddp[j++] = &slirpd2;
+#ifdef WITH_UAENET_PCAP
nd = uaenet_enumerate (NULL);
if (nd) {
for (int i = 0; i < nd[i].active; i++) {
nddp[j++] = nd;
}
}
+#endif
nddp[j] = NULL;
return true;
}
case UAENET_SLIRP:
case UAENET_SLIRP_INBOUND:
return;
+#ifdef WITH_UAENET_PCAP
case UAENET_PCAP:
return uaenet_close_driver (ndd);
+#endif
}
netmode = 0;
}
case UAENET_SLIRP:
case UAENET_SLIRP_INBOUND:
return sizeof (struct ethernet_data);
+#ifdef WITH_UAENET_PCAP
case UAENET_PCAP:
return uaenet_getdatalenght ();
+#endif
}
return 0;
-}
\ No newline at end of file
+}
-
+#ifndef _UAE_ETHERNET_H_
+#define _UAE_ETHERNET_H_
#define UAENET_NONE 0
#define UAENET_SLIRP 1
struct netdriverdata
{
int type;
- TCHAR *name;
- TCHAR *desc;
- int mtu;
- uae_u8 mac[6];
- int active;
+ const TCHAR *name;
+ const TCHAR *desc;
+ int mtu;
+ uae_u8 mac[6];
+ int active;
};
extern void ethernet_trigger (void*);
extern bool slirp_start (void);
-extern void slirp_end (void);
\ No newline at end of file
+extern void slirp_end (void);
+
+#endif // _UAE_ETHERNET_H_
* (c) 2007 Toni Wilen
*/
+#define MAX_TOTAL_NET_DEVICES 10
+
uaecptr netdev_startup (uaecptr resaddr);
void netdev_install (void);
void netdev_reset (void);
#define WITH_UAENATIVE
#define WITH_SLIRP
#define WITH_TABLETLIBRARY
+#define WITH_UAENET_PCAP
#else
#define FSDB_DIR_SEPARATOR '\\'
#define FSDB_DIR_SEPARATOR_S _T("\\")
+
+/* Define to 1 if `S_un' is a member of `struct in_addr'. */
+#define HAVE_STRUCT_IN_ADDR_S_UN 1
typedef void (uaenet_gotfunc)(struct s2devstruct *dev, const uae_u8 *data, int len);
typedef int (uaenet_getfunc)(struct s2devstruct *dev, uae_u8 *d, int *len);
-#define MAX_TOTAL_NET_DEVICES 10
-
extern struct netdriverdata *uaenet_enumerate (const TCHAR *name);
extern void uaenet_enumerate_free (void);
extern void uaenet_close_driver (struct netdriverdata *tc);
extern int uaenet_getbytespending (void*);
extern int uaenet_open (void*, struct netdriverdata*, void*, uaenet_gotfunc*, uaenet_getfunc*, int);
extern void uaenet_close (void*);
-extern void uaenet_gotdata (struct s2devstruct *dev, const uae_u8 *data, int len);
-extern int uaenet_getdata (struct s2devstruct *dev, uae_u8 *d, int *len);
extern void uaenet_trigger (void*);
#include "blkdev.h"
#include "uae.h"
#include "sana2.h"
+#if defined(_WIN32) && defined(WITH_UAENET_PCAP)
#include "win32_uaenet.h"
+#else
+#include "ethernet.h"
+#endif
#include "execio.h"
+void uaenet_gotdata (struct s2devstruct *dev, const uae_u8 *data, int len);
+int uaenet_getdata (struct s2devstruct *dev, uae_u8 *d, int *len);
+
#define SANA2NAME _T("uaenet.device")
#define MAX_ASYNC_REQUESTS 200
ROM_netdev_resid = 0,
ROM_netdev_init = 0;
-static TCHAR *getdevname (void)
+static const TCHAR *getdevname (void)
{
return _T("uaenet.device");
}
return s2p;
}
-static int uaenet_getdata (struct s2devstruct *dev, uae_u8 *d, int *len)
+int uaenet_getdata (struct s2devstruct *dev, uae_u8 *d, int *len)
{
int gotit;
struct asyncreq *ar;
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include <slirp.h>
+#include "slirp.h"
/* XXX: only DHCP is supported */
* in_cksum.c,v 1.2 1994/08/02 07:48:16 davidg Exp
*/
-#include <slirp.h>
+#include "slirp.h"
/*
* Checksum routine for Internet Protocol family headers (Portable Version).
* terms and conditions of the copyright.
*/
-#include <slirp.h>
+#include "slirp.h"
int if_mtu, if_mru;
int if_comp;
* terms and conditions of the copyright.
*/
-#include <slirp.h>
+#include "slirp.h"
#include "ip_icmp.h"
int ip_defttl;
* terms and conditions of the copyright.
*/
-#include <slirp.h>
+#include "slirp.h"
u_int16_t ip_id;
int slirp_add_exec(int do_pty, const char *args, int addr_low_byte,
int guest_port);
-extern const char *tftp_prefix;
extern char slirp_hostname[33];
#ifdef __cplusplus
*/
#include <stdlib.h>
-#include <slirp.h>
+#include "slirp.h"
struct mbuf *mbutl;
char *mclrefcnt;
#define WANT_SYS_IOCTL_H
#include <stdlib.h>
-#include <slirp.h>
+#include "slirp.h"
u_int curtime, time_fasttimo, last_slowtimo, detach_time;
u_int detach_wait = 600000; /* 10 minutes */
#else
int
-slirp_openpty(amaster, aslave)
- int *amaster, *aslave;
+slirp_openpty(int *amaster, int *aslave)
{
register int master, slave;
* do_ptr = 2 Fork/exec using pty
*/
int
-fork_exec(so, ex, do_pty)
- struct socket *so;
- char *ex;
- int do_pty;
+fork_exec(struct socket *so, char *ex, int do_pty)
{
int s;
struct sockaddr_in addr;
*/
#include <stdlib.h>
-#include <slirp.h>
+#include "slirp.h"
/* Done as a macro in socket.h */
/* int
#undef HAVE_DRAND48
/* Define if you have memmove */
+#ifndef HAVE_MEMMOVE
#define HAVE_MEMMOVE
+#endif
/* Define if you have gethostid */
#undef HAVE_GETHOSTID
* terms and conditions of the copyright.
*/
-#include <slirp.h>
+#include "slirp.h"
FILE *dfd = NULL;
#ifdef DEBUG
#define WANT_SYS_IOCTL_H
#include <stdlib.h>
-#include <slirp.h>
+#include "slirp.h"
#include "ip_icmp.h"
#include "main.h"
#ifdef __sun__
*/
#include <stdlib.h>
-#include <slirp.h>
+#include "slirp.h"
#include "ip_icmp.h"
struct socket tcb;
* terms and conditions of the copyright.
*/
-#include <slirp.h>
+#include "slirp.h"
/*
* Since this is only used in "stats socket", we give meaning
#define WANT_SYS_IOCTL_H
#include <stdlib.h>
-#include <slirp.h>
+#include "slirp.h"
/* patchable/settable parameters for tcp */
int tcp_mssdflt = TCP_MSS;
* tcp_timer.c,v 1.2 1994/08/02 07:49:10 davidg Exp
*/
-#include <slirp.h>
+#include "slirp.h"
int tcp_keepidle = TCPTV_KEEP_IDLE;
int tcp_keepintvl = TCPTV_KEEPINTVL;
* THE SOFTWARE.
*/
-#include <slirp.h>
+#include "slirp.h"
+#ifdef _WIN32
#include <io.h>
+#endif
struct tftp_session {
int in_use;
*/
#include <stdlib.h>
-#include <slirp.h>
+#include "slirp.h"
#include "ip_icmp.h"
struct udpstat udpstat;