#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
Go to the source code of this file.
Classes | |
struct | udp_connection |
struct | tcp_connection |
struct | net |
struct | ethernet_packet_link |
struct | remote_net |
Macros | |
#define | NET_DEFAULT_IPV4_MASK "10.0.0.0" |
#define | NET_DEFAULT_IPV4_LEN 8 |
#define | ETHERTYPE_SPRITE 0x0500 |
#define | ETHERTYPE_IP 0x0800 |
#define | ETHERTYPE_ARP 0x0806 |
#define | ETHERTYPE_REVARP 0x8035 |
#define | ETHERTYPE_IPV6 0x86DD |
#define | MAX_TCP_CONNECTIONS 100 |
#define | MAX_UDP_CONNECTIONS 100 |
#define | NET_INIT_FLAG_GATEWAY 1 |
#define | TCP_OUTSIDE_TRYINGTOCONNECT 1 |
#define | TCP_OUTSIDE_CONNECTED 2 |
#define | TCP_OUTSIDE_DISCONNECTED 3 |
#define | TCP_OUTSIDE_DISCONNECTED2 4 |
#define | TCP_INCOMING_BUF_LEN 2000 |
#define | NET_ADDR_IPV4 1 |
#define | NET_ADDR_IPV6 2 |
#define | NET_ADDR_ETHERNET 3 |
Functions | |
void | net_debugaddr (void *addr, int type) |
void | net_generate_unique_mac (struct machine *, unsigned char *macbuf) |
void | send_udp (struct in_addr *addrp, int portnr, unsigned char *packet, size_t len) |
void | net_ip_checksum (unsigned char *ip_header, int chksumoffset, int len) |
void | net_ip_tcp_checksum (unsigned char *tcp_header, int chksumoffset, int tcp_len, unsigned char *srcaddr, unsigned char *dstaddr, int udpflag) |
void | net_ip_tcp_connectionreply (struct net *net, void *extra, int con_id, int connecting, unsigned char *data, int datalen, int rst) |
void | net_ip_broadcast (struct net *net, void *extra, unsigned char *packet, int len) |
void | net_ip (struct net *net, void *extra, unsigned char *packet, int len) |
void | net_udp_rx_avail (struct net *net, void *extra) |
void | net_tcp_rx_avail (struct net *net, void *extra) |
struct ethernet_packet_link * | net_allocate_ethernet_packet_link (struct net *net, void *extra, size_t len) |
int | net_ethernet_rx_avail (struct net *net, void *extra) |
int | net_ethernet_rx (struct net *net, void *extra, unsigned char **packetp, int *lenp) |
void | net_ethernet_tx (struct net *net, void *extra, unsigned char *packet, int len) |
void | net_dumpinfo (struct net *net) |
void | net_add_nic (struct net *net, void *extra, unsigned char *macaddr) |
struct net * | net_init (struct emul *emul, int init_flags, const char *ipv4addr, int netipv4len, char **remote, int n_remote, int local_port, const char *settings_prefix) |
#define ETHERTYPE_ARP 0x0806 |
Definition at line 56 of file net.h.
Referenced by net_ethernet_tx().
#define ETHERTYPE_IP 0x0800 |
Definition at line 55 of file net.h.
Referenced by net_ethernet_tx().
#define MAX_TCP_CONNECTIONS 100 |
Definition at line 116 of file net.h.
Referenced by net_dumpinfo(), and net_tcp_rx_avail().
#define MAX_UDP_CONNECTIONS 100 |
Definition at line 117 of file net.h.
Referenced by net_dumpinfo(), and net_udp_rx_avail().
#define NET_ADDR_ETHERNET 3 |
Definition at line 220 of file net.h.
Referenced by net_debugaddr(), and net_dumpinfo().
#define NET_ADDR_IPV4 1 |
Definition at line 218 of file net.h.
Referenced by net_debugaddr(), and net_dumpinfo().
#define NET_ADDR_IPV6 2 |
Definition at line 219 of file net.h.
Referenced by net_debugaddr().
#define NET_DEFAULT_IPV4_LEN 8 |
Definition at line 45 of file net.h.
Referenced by emul_simple_init().
#define NET_DEFAULT_IPV4_MASK "10.0.0.0" |
Definition at line 44 of file net.h.
Referenced by emul_simple_init().
#define NET_INIT_FLAG_GATEWAY 1 |
Definition at line 188 of file net.h.
Referenced by emul_simple_init().
#define TCP_INCOMING_BUF_LEN 2000 |
Definition at line 216 of file net.h.
Referenced by net_tcp_rx_avail().
#define TCP_OUTSIDE_CONNECTED 2 |
Definition at line 212 of file net.h.
Referenced by net_ip_tcp_connectionreply(), and net_tcp_rx_avail().
#define TCP_OUTSIDE_DISCONNECTED 3 |
Definition at line 213 of file net.h.
Referenced by net_ip_tcp_connectionreply(), and net_tcp_rx_avail().
#define TCP_OUTSIDE_TRYINGTOCONNECT 1 |
Definition at line 211 of file net.h.
Referenced by net_tcp_rx_avail().
void net_add_nic | ( | struct net * | net, |
void * | extra, | ||
unsigned char * | macaddr | ||
) |
Definition at line 598 of file net.cc.
References CHECK_ALLOCATION, net::n_nics, and net::nic_extra.
Referenced by dev_le_init(), and DEVINIT().
struct ethernet_packet_link* net_allocate_ethernet_packet_link | ( | struct net * | net, |
void * | extra, | ||
size_t | len | ||
) |
Definition at line 72 of file net.cc.
References CHECK_ALLOCATION, ethernet_packet_link::data, ethernet_packet_link::extra, net::first_ethernet_packet, net::last_ethernet_packet, ethernet_packet_link::len, ethernet_packet_link::next, and ethernet_packet_link::prev.
Referenced by net_ethernet_rx_avail(), net_ethernet_tx(), net_ip_tcp_connectionreply(), and net_udp_rx_avail().
void net_debugaddr | ( | void * | addr, |
int | type | ||
) |
Definition at line 50 of file net_misc.cc.
References debug, fatal(), NET_ADDR_ETHERNET, NET_ADDR_IPV4, and NET_ADDR_IPV6.
Referenced by net_dumpinfo().
void net_dumpinfo | ( | struct net * | net | ) |
Definition at line 655 of file net.cc.
References debug, DEBUG_INDENTATION, debug_indentation(), net::domain_name, net::gateway_ethernet_addr, net::gateway_ipv4_addr, remote_net::ipv4_addr, net::local_port, MAX_TCP_CONNECTIONS, MAX_UDP_CONNECTIONS, remote_net::name, net::nameserver_ipv4, net::nameserver_known, NET_ADDR_ETHERNET, NET_ADDR_IPV4, net_debugaddr(), net::netmask_ipv4, net::netmask_ipv4_len, remote_net::next, remote_net::portnr, and net::remote_nets.
Referenced by emul_dumpinfo().
int net_ethernet_rx | ( | struct net * | net, |
void * | extra, | ||
unsigned char ** | packetp, | ||
int * | lenp | ||
) |
Definition at line 316 of file net.cc.
References ethernet_packet_link::data, ethernet_packet_link::extra, net::first_ethernet_packet, net::last_ethernet_packet, ethernet_packet_link::len, ethernet_packet_link::next, and ethernet_packet_link::prev.
Referenced by dec21143_rx(), DEVICE_ACCESS(), and net_ethernet_rx_avail().
int net_ethernet_rx_avail | ( | struct net * | net, |
void * | extra | ||
) |
Definition at line 253 of file net.cc.
References ethernet_packet_link::data, net::local_port, net::local_port_socket, net::n_nics, net_allocate_ethernet_packet_link(), net_ethernet_rx(), net_tcp_rx_avail(), net_udp_rx_avail(), and net::nic_extra.
Referenced by dec21143_rx(), and DEVICE_TICK().
void net_ethernet_tx | ( | struct net * | net, |
void * | extra, | ||
unsigned char * | packet, | ||
int | len | ||
) |
Definition at line 371 of file net.cc.
References ethernet_packet_link::data, ETHERTYPE_ARP, ETHERTYPE_IP, fatal(), net::gateway_ethernet_addr, remote_net::ipv4_addr, net::n_nics, net_allocate_ethernet_packet_link(), net_ip(), net_ip_broadcast(), remote_net::next, net::nic_extra, remote_net::portnr, net::remote_nets, and send_udp().
Referenced by dec21143_tx(), and DEVICE_ACCESS().
void net_generate_unique_mac | ( | struct machine * | , |
unsigned char * | macbuf | ||
) |
Definition at line 88 of file net_misc.cc.
References fatal(), MACHINE_SGI, machine::machine_type, machine::nr_of_nics, and machine::serial_nr.
Referenced by dev_le_init(), DEVINIT(), MACHINE_SETUP(), and yamon_machine_setup().
struct net* net_init | ( | struct emul * | emul, |
int | init_flags, | ||
const char * | ipv4addr, | ||
int | netipv4len, | ||
char ** | remote, | ||
int | n_remote, | ||
int | local_port, | ||
const char * | settings_prefix | ||
) |
Definition at line 720 of file net.cc.
References CHECK_ALLOCATION, net::domain_name, net::emul, net::first_ethernet_packet, net::last_ethernet_packet, net::nameserver_known, net::netmask_ipv4, net::netmask_ipv4_len, and net::timestamp.
Referenced by emul_simple_init().
void net_ip | ( | struct net * | net, |
void * | extra, | ||
unsigned char * | packet, | ||
int | len | ||
) |
void net_ip_broadcast | ( | struct net * | net, |
void * | extra, | ||
unsigned char * | packet, | ||
int | len | ||
) |
Definition at line 1133 of file net_ip.cc.
References fatal(), ethernet_packet_link::len, net::netmask_ipv4, and net::netmask_ipv4_len.
Referenced by net_ethernet_tx().
void net_ip_checksum | ( | unsigned char * | ip_header, |
int | chksumoffset, | ||
int | len | ||
) |
Definition at line 55 of file net_ip.cc.
Referenced by net_ip_tcp_connectionreply(), and net_udp_rx_avail().
void net_ip_tcp_checksum | ( | unsigned char * | tcp_header, |
int | chksumoffset, | ||
int | tcp_len, | ||
unsigned char * | srcaddr, | ||
unsigned char * | dstaddr, | ||
int | udpflag | ||
) |
Definition at line 91 of file net_ip.cc.
Referenced by net_ip_tcp_connectionreply().
void net_ip_tcp_connectionreply | ( | struct net * | net, |
void * | extra, | ||
int | con_id, | ||
int | connecting, | ||
unsigned char * | data, | ||
int | datalen, | ||
int | rst | ||
) |
Definition at line 228 of file net_ip.cc.
References ethernet_packet_link::data, tcp_connection::ethernet_address, fatal(), net::gateway_ethernet_addr, tcp_connection::inside_seqnr, tcp_connection::inside_tcp_port, net_allocate_ethernet_packet_link(), net_ip_checksum(), net_ip_tcp_checksum(), tcp_connection::outside_acknr, tcp_connection::outside_seqnr, tcp_connection::outside_tcp_port, tcp_connection::state, net::tcp_connections, tcp_connection::tcp_id, TCP_OUTSIDE_CONNECTED, TCP_OUTSIDE_DISCONNECTED, and net::timestamp.
Referenced by net_tcp_rx_avail().
void net_tcp_rx_avail | ( | struct net * | net, |
void * | extra | ||
) |
Definition at line 1384 of file net_ip.cc.
References CHECK_ALLOCATION, debug, fatal(), tcp_connection::in_use, tcp_connection::incoming_buf, tcp_connection::incoming_buf_len, tcp_connection::incoming_buf_rounds, tcp_connection::incoming_buf_seqnr, tcp_connection::inside_acknr, tcp_connection::last_used_timestamp, MAX_TCP_CONNECTIONS, net_ip_tcp_connectionreply(), tcp_connection::outside_seqnr, tcp_connection::socket, tcp_connection::state, net::tcp_connections, TCP_INCOMING_BUF_LEN, TCP_OUTSIDE_CONNECTED, TCP_OUTSIDE_DISCONNECTED, TCP_OUTSIDE_TRYINGTOCONNECT, and net::timestamp.
Referenced by net_ethernet_rx_avail().
void net_udp_rx_avail | ( | struct net * | net, |
void * | extra | ||
) |
Definition at line 1225 of file net_ip.cc.
References ethernet_packet_link::data, udp_connection::fake_ns, fatal(), net::gateway_ethernet_addr, net::gateway_ipv4_addr, udp_connection::in_use, udp_connection::last_used_timestamp, MAX_UDP_CONNECTIONS, net_allocate_ethernet_packet_link(), net_ip_checksum(), udp_connection::socket, net::timestamp, net::udp_connections, and udp_connection::udp_id.
Referenced by net_ethernet_rx_avail().
void send_udp | ( | struct in_addr * | addrp, |
int | portnr, | ||
unsigned char * | packet, | ||
size_t | len | ||
) |
Definition at line 125 of file net_misc.cc.
Referenced by net_ethernet_tx().