/[gxemul]/upstream/0.4.4/src/include/net.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /upstream/0.4.4/src/include/net.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4 by dpavlin, Mon Oct 8 16:18:00 2007 UTC revision 34 by dpavlin, Mon Oct 8 16:21:17 2007 UTC
# Line 2  Line 2 
2  #define NET_H  #define NET_H
3    
4  /*  /*
5   *  Copyright (C) 2004-2005  Anders Gavare.  All rights reserved.   *  Copyright (C) 2004-2007  Anders Gavare.  All rights reserved.
6   *   *
7   *  Redistribution and use in source and binary forms, with or without   *  Redistribution and use in source and binary forms, with or without
8   *  modification, are permitted provided that the following conditions are met:   *  modification, are permitted provided that the following conditions are met:
# Line 28  Line 28 
28   *  SUCH DAMAGE.   *  SUCH DAMAGE.
29   *   *
30   *   *
31   *  $Id: net.h,v 1.11 2005/03/14 19:14:03 debug Exp $   *  $Id: net.h,v 1.17 2006/12/30 13:31:01 debug Exp $
32   *   *
33   *  Emulated network support.  (See net.c for more info.)   *  Emulated network support.  (See net.c for more info.)
34   */   */
# Line 39  Line 39 
39    
40  struct emul;  struct emul;
41  struct ethernet_packet_link;  struct ethernet_packet_link;
42    struct remote_net;
43    
44    
45    /*  Default emulated "simple" IPv4 network, if nothing else is specified:  */
46    #define NET_DEFAULT_IPV4_MASK           "10.0.0.0"
47    #define NET_DEFAULT_IPV4_LEN            8
48    
49    
50    /*****************************************************************************/
51    
52    /*
53     *  NOTE: These are already defined in <net/ethernet.h> on e.g. FreeBSD,
54     *        but they are missing in some systems (at least in Linux).
55     */
56    #define ETHERTYPE_SPRITE                0x0500
57    #define ETHERTYPE_IP                    0x0800
58    #define ETHERTYPE_ARP                   0x0806
59    #define ETHERTYPE_REVARP                0x8035
60    #define ETHERTYPE_IPV6                  0x86DD
61    
62  /*****************************************************************************/  /*****************************************************************************/
63    
64  /*  NOTE: udp_connection and tcp_connection are actually for  /*  NOTE: udp_connection and tcp_connection are actually for
# Line 97  struct tcp_connection { Line 115  struct tcp_connection {
115  /*****************************************************************************/  /*****************************************************************************/
116    
117    
118  #define MAX_TCP_CONNECTIONS     60  #define MAX_TCP_CONNECTIONS     100
119  #define MAX_UDP_CONNECTIONS     60  #define MAX_UDP_CONNECTIONS     100
120    
121  struct net {  struct net {
122          /*  The emul struct which this net belong to:  */          /*  The emul struct which this net belong to:  */
# Line 128  struct net { Line 146  struct net {
146    
147          struct udp_connection udp_connections[MAX_UDP_CONNECTIONS];          struct udp_connection udp_connections[MAX_UDP_CONNECTIONS];
148          struct tcp_connection tcp_connections[MAX_TCP_CONNECTIONS];          struct tcp_connection tcp_connections[MAX_TCP_CONNECTIONS];
149    
150            /*  Distributed network:  */
151            int             local_port;
152            int             local_port_socket;
153            struct remote_net *remote_nets;
154  };  };
155    
156  /*  net.c:  */  /*  net_misc.c:  */
157    void net_debugaddr(void *addr, int type);
158  void net_generate_unique_mac(struct machine *, unsigned char *macbuf);  void net_generate_unique_mac(struct machine *, unsigned char *macbuf);
159    void send_udp(struct in_addr *addrp, int portnr, unsigned char *packet,
160            size_t len);
161    
162    /*  net_ip.c:  */
163    void net_ip_checksum(unsigned char *ip_header, int chksumoffset, int len);
164    void net_ip_tcp_checksum(unsigned char *tcp_header, int chksumoffset,
165            int tcp_len, unsigned char *srcaddr, unsigned char *dstaddr,
166            int udpflag);
167    void net_ip_tcp_connectionreply(struct net *net, void *extra,
168            int con_id, int connecting, unsigned char *data, int datalen, int rst);
169    void net_ip_broadcast(struct net *net, void *extra,
170            unsigned char *packet, int len);
171    void net_ip(struct net *net, void *extra, unsigned char *packet, int len);
172    void net_udp_rx_avail(struct net *net, void *extra);
173    void net_tcp_rx_avail(struct net *net, void *extra);
174    
175    /*  net.c:  */
176    struct ethernet_packet_link *net_allocate_ethernet_packet_link(
177            struct net *net, void *extra, size_t len);
178  int net_ethernet_rx_avail(struct net *net, void *extra);  int net_ethernet_rx_avail(struct net *net, void *extra);
179  int net_ethernet_rx(struct net *net, void *extra,  int net_ethernet_rx(struct net *net, void *extra,
180          unsigned char **packetp, int *lenp);          unsigned char **packetp, int *lenp);
# Line 140  void net_ethernet_tx(struct net *net, vo Line 183  void net_ethernet_tx(struct net *net, vo
183  void net_dumpinfo(struct net *net);  void net_dumpinfo(struct net *net);
184  void net_add_nic(struct net *net, void *extra, unsigned char *macaddr);  void net_add_nic(struct net *net, void *extra, unsigned char *macaddr);
185  struct net *net_init(struct emul *emul, int init_flags,  struct net *net_init(struct emul *emul, int init_flags,
186          char *ipv4addr, int netipv4len);          const char *ipv4addr, int netipv4len, char **remote, int n_remote,
187            int local_port, const char *settings_prefix);
188    
189  /*  Flag used to signify that this net should have a gateway:  */  /*  Flag used to signify that this net should have a gateway:  */
190  #define NET_INIT_FLAG_GATEWAY           1  #define NET_INIT_FLAG_GATEWAY           1
# Line 149  struct net *net_init(struct emul *emul, Line 193  struct net *net_init(struct emul *emul,
193  /*  /*
194   *  This is for internal use in src/net.c:   *  This is for internal use in src/net.c:
195   */   */
   
196  struct ethernet_packet_link {  struct ethernet_packet_link {
197          struct ethernet_packet_link *prev;          struct ethernet_packet_link *prev;
198          struct ethernet_packet_link *next;          struct ethernet_packet_link *next;
# Line 159  struct ethernet_packet_link { Line 202  struct ethernet_packet_link {
202          int             len;          int             len;
203  };  };
204    
205    struct remote_net {
206            struct remote_net *next;
207    
208            char            *name;
209            struct in_addr  ipv4_addr;
210            int             portnr;
211    };
212    
213  #define TCP_OUTSIDE_TRYINGTOCONNECT     1  #define TCP_OUTSIDE_TRYINGTOCONNECT     1
214  #define TCP_OUTSIDE_CONNECTED           2  #define TCP_OUTSIDE_CONNECTED           2
# Line 167  struct ethernet_packet_link { Line 217  struct ethernet_packet_link {
217    
218  #define TCP_INCOMING_BUF_LEN    2000  #define TCP_INCOMING_BUF_LEN    2000
219    
220    #define NET_ADDR_IPV4           1
221    #define NET_ADDR_IPV6           2
222    #define NET_ADDR_ETHERNET       3
223    
224  #endif  /*  NET_H  */  #endif  /*  NET_H  */

Legend:
Removed from v.4  
changed lines
  Added in v.34

  ViewVC Help
Powered by ViewVC 1.1.26