OpenCores
URL https://opencores.org/ocsvn/1g_ethernet_dpi/1g_ethernet_dpi/trunk

Subversion Repositories 1g_ethernet_dpi

[/] [1g_ethernet_dpi/] [tags/] [v0.0/] [sw/] [dev/] [test_bfm/] [ether/] [ether.h] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 kuzmi4
#ifndef _ETHER_H_
2
#define _ETHER_H_
3
 
4
 
5
#ifdef __cplusplus
6
extern "C"
7
{
8
#endif// __cplusplus
9
 
10
// net-order macros
11
#define lswap(x) ((((x) & 0xff000000) >> 24) | \
12
                  (((x) & 0x00ff0000) >>  8) | \
13
                  (((x) & 0x0000ff00) <<  8) | \
14
                  (((x) & 0x000000ff) << 24))
15
#define htonl(l) (lswap(l))
16
#define ntohl(l) (lswap(l))
17
#define htons(s) ((((s) >> 8) & 0xff) | \
18
                  (((s) << 8) & 0xff00))
19
#define ntohs(s) htons(s)
20
 
21
// prep IP-addr for PRINT
22
#define  PUSH_IPADDR(ip)\
23
   (unsigned)(ip&0xff),\
24
   (unsigned)((ip>>8)&0xff),\
25
   (unsigned)((ip>>16)&0xff),\
26
   (unsigned)(ip>>24)
27
// 
28
#define ETH_PKT_MAC_ADDR_LEN    (6)
29
#define ETH_PKT_IP_ADDR_LEN     (4)
30
#define ETH_HDR_LEN             (ETH_PKT_MAC_ADDR_LEN + ETH_PKT_MAC_ADDR_LEN + 2) // ..+ pkt_type
31
#define ETH_IPv4_HDR_LEN        (20) // -> 20 Bytes
32
// TU-val
33
#define ETH_MIN_TU              (60)
34
#define ETH_MAX_TU              (1500) // Eth MTU
35
// ETH#
36
#define ETH_PKT_ARP             ntohs(0x0806)
37
#define ETH_PKT_IPv4            ntohs(0x0800)
38
#define ETH_PKT_IPv6            ntohs(0x86dd)
39
// IPv4#
40
#define IPv4_ICMP               0x01
41
#define IPv4_IGMP               0x02
42
#define IPv4_TCP                0x06
43
#define IPv4_UDP                0x11
44
#define IPv4_RDP                0x1B
45
#define IPv4_IRTP               0x1C
46
#define IPv4_IPv6Encaps         0x29
47
#define IPv4_IPv6Route          0x2B
48
#define IPv4_IPv6Frag           0x2C
49
#define IPv4_VISA               0x46
50
#define IPv4_QNX                0x6A
51
#define IPv4_SMP                0x79
52
#define IPv4_SCTP               0x84
53
#define IPv4_UDPLite            0x88
54
 
55
 
56
 
57
 
58
// 
59
typedef unsigned short u16;
60
typedef unsigned int ip_addr;
61
// 
62
typedef struct {
63
   char    ip_ver_ihl;    // 4 bit version, 4 bit hdr len in 32bit words 
64
   char    ip_tos;        // Type of Service,  RFC 2474 -> {DSCP[5:0], ECN[1:0]} 
65
   u16     ip_len;        // Total packet length including header 
66
   u16     ip_id;         // ID for fragmentation 
67
   u16     ip_flgs_foff;  // mask in flags as needed 
68
   unsigned char    ip_time;       // Time to live (secs) 
69
   char    ip_prot;       // protocol 
70
   u16     ip_chksum;     // Header checksum 
71
   ip_addr ip_src;        // Source Addr 
72
   ip_addr ip_dest;       // Destination Addr 
73
} ip_hdr_t;
74
// 
75
typedef struct
76
{
77
   u16  ud_srcp;    /* source port */
78
   u16  ud_dstp;    /* dest port */
79
   u16  ud_len;     /* length of UDP packet */
80
   u16  ud_cksum;   /* UDP checksum */
81
} udp_hdr_t;
82
 
83
 
84
 
85
// tx
86
void ether_tx(char *ibuff, int ilen);
87
// rx
88
int ether_rx_ok(void);
89
void ether_rx(char *obuff, int *olen);
90
 
91
 
92
#ifdef __cplusplus
93
}
94
#endif// __cplusplus
95
 
96
#endif // _ETHER_H_

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.