Files
mips/src/ethernet.h
T
jens 26291bca3d - initial import
git-svn-id: http://moon:8086/svn/mips@1 a8ebac50-d88d-4704-bea3-6648445a41b3
2014-07-20 15:01:37 +00:00

75 lines
2.0 KiB
C

// -------------------------------------------------------------------------
// ethernet.h
//
// 21.12.2003, J. Ahrensfeld
//
// -------------------------------------------------------------------------
#ifndef ETHERNET_H
#define ETHERNET_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include "libsys.h"
#define ETH_PACKET_MIN_SIZE 64
#define ETH_PACKET_MAX_SIZE 1500
// -------------------------------------------------------------------------
#define ARP_REQUEST 0x0001
#define ARP_REPLY 0x0002
#define TYPE_HW_ETH10 0x0001
#define TYPE_HW_ETH3 0x0002
#define TYPE_HW_AX25 0x0003
#define TYPE_HW_TKRNG 0x0004
#define TYPE_HW_CHAOS 0x0005
#define TYPE_HW_IEEE 0x0006
#define TYPE_HW_ARCNET 0x0007
#define TYPE_PROTO_IP 0x0800
#define TYPE_PROTO_X75 0x0801
#define TYPE_PROTO_NBS 0x0802
#define TYPE_PROTO_ECMA 0x0803
#define TYPE_PROTO_CHAOS 0x0804
#define TYPE_PROTO_X25 0x0805
#define TYPE_PROTO_ARP 0x0806
#define TYPE_PROTO_XNS 0x0807
#define TYPE_PROTO_LOOP 0x9000
#define HTONS(n) ((((uint16_t)((n) & 0xff)) << 8) | (((n) & 0xff00) >> 8))
// -------------------------------------------------------------------------
typedef struct _seth_hdr_t
{
uint8_t eth_addr_dst[6], eth_addr_src[6];
uint16_t proto;
} __attribute__ ((__packed__)) eth_hdr_t;
typedef struct _spacket_t
{
uint8_t pkt_buf[1516];
uint16_t size;
uint8_t *pData;
} packet_t;
// -------------------------------------------------------------------------
void EthInit(void);
uint8_t *Eth_pkt_create(packet_t *pPacket, uint16_t proto, uint8_t *pHwAddr_src, uint8_t *pHwAddr_dst);
uint8_t *Eth_pkt_append(packet_t *pPacket, uint32_t size);
uint8_t *Eth_pkt_buffer_get(packet_t *pPacket);
uint32_t Eth_pkt_send(packet_t *pPacket);
uint32_t Eth_pkt_recv(uint8_t *pData);
uint16_t htons(uint16_t a);
// -------------------------------------------------------------------------
#endif // ETHERNET_H