ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/include/ether.h
(Generate patch)

Comparing BasiliskII/src/include/ether.h (file contents):
Revision 1.2 by cebix, 2000-04-10T18:53:30Z vs.
Revision 1.5 by cebix, 2001-07-13T15:39:25Z

# Line 1 | Line 1
1   /*
2   *  ether.h - Ethernet device driver
3   *
4 < *  Basilisk II (C) 1997-2000 Christian Bauer
4 > *  Basilisk II (C) 1997-2001 Christian Bauer
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 21 | Line 21
21   #ifndef ETHER_H
22   #define ETHER_H
23  
24 + struct sockaddr_in;
25 +
26 + extern void EtherInit(void);
27 + extern void EtherExit(void);
28 +
29   extern int16 EtherOpen(uint32 pb, uint32 dce);
30   extern int16 EtherControl(uint32 pb, uint32 dce);
31   extern void EtherReadPacket(uint8 **src, uint32 &dest, uint32 &len, uint32 &remaining);
32  
33   // System specific and internal functions/data
29 extern void EtherInit(void);
30 extern void EtherExit(void);
34   extern void EtherReset(void);
35   extern void EtherInterrupt(void);
36  
37 + extern bool ether_init(void);
38 + extern void ether_exit(void);
39 + extern void ether_reset(void);
40   extern int16 ether_add_multicast(uint32 pb);
41   extern int16 ether_del_multicast(uint32 pb);
42   extern int16 ether_attach_ph(uint16 type, uint32 handler);
43   extern int16 ether_detach_ph(uint16 type);
44   extern int16 ether_write(uint32 wds);
45 + extern bool ether_start_udp_thread(int socket_fd);
46 + extern void ether_stop_udp_thread(void);
47 + extern void ether_udp_read(uint8 *packet, int length, struct sockaddr_in *from);
48  
49 < extern uint8 ether_addr[6];     // Ethernet address (set by EtherInit())
41 < extern bool net_open;           // Flag: initialization succeeded, network device open (set by EtherInit())
49 > extern uint8 ether_addr[6];     // Ethernet address (set by ether_init())
50  
51   // Ethernet driver data in MacOS RAM
52   enum {
# Line 53 | Line 61 | enum {
61  
62   extern uint32 ether_data;       // Mac address of driver data in MacOS RAM
63  
64 + // Copy packet data from WDS to linear buffer (must hold at least 1514 bytes),
65 + // returns packet length
66 + static inline int ether_wds_to_buffer(uint32 wds, uint8 *p)
67 + {
68 +        int len = 0;
69 +        while (len < 1514) {
70 +                int w = ReadMacInt16(wds);
71 +                if (w == 0)
72 +                        break;
73 +                Mac2Host_memcpy(p, ReadMacInt32(wds + 2), w);
74 +                len += w;
75 +                p += w;
76 +                wds += 6;
77 +        }
78 +        return len;
79 + }
80 +
81   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines