source: edk_user_repository/WARP/sw_services/WARPxilnet_v3_01_a/src/xilnet_xilsock.h

Last change on this file was 1929, checked in by murphpo, 11 years ago

Adding updated WARPxilnet, required for WARPLab 7 ref design

File size: 5.7 KB
Line 
1////////////////////////////////////////////////////////////////////////////////
2// Copyright (c) 2004 Xilinx, Inc.  All rights reserved.
3//
4// Xilinx, Inc.
5// XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
6// COURTESY TO YOU.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
7// ONE POSSIBLE   IMPLEMENTATION OF THIS FEATURE, APPLICATION OR
8// STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION
9// IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE
10// FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
11// XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
12// THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO
13// ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
14// FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY
15// AND FITNESS FOR A PARTICULAR PURPOSE.
16//
17// File   : xilsock.h
18// Date   : 2002, March 20.
19// Author : Sathya Thammanur
20// Company: Xilinx
21// Group  : Emerging Software Technologies
22//
23// Summary:
24// Header file for Xilinx internal socket structure definitions
25//
26// $Id: xilsock.h,v 1.2.8.6 2005/11/15 23:41:10 salindac Exp $
27//
28////////////////////////////////////////////////////////////////////////////////
29
30////////////////////////////////////////////////////////////////////////////////
31// see copyright.txt for Rice University/Mango Communications modifications
32////////////////////////////////////////////////////////////////////////////////
33
34#ifndef _XILSOCK_H_
35#define _XILSOCK_H_
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41#include <xilnet_eth.h>
42#include <xilnet_arp.h>
43#include <xilnet_ip.h>
44#include <xilnet_tcp.h>
45#include <xilnet_udp.h>
46#include <xilnet_icmp.h>
47#include <xilnet_in.h>
48#include <xilnet_socket.h>
49#include <string.h>
50#include <xil_io.h>
51
52// definitions for connections
53#define TRUE                  1
54#define FALSE                 0
55
56/* Data Link Layer definitions
57 * Add #if's for PPP header lengths
58 */
59
60#define LINK_HDR_LEN          ETH_HDR_LEN
61#define LINK_FRAME_LEN     ETH_FRAME_LEN
62
63// msg structure
64struct xilsock_buf {
65   unsigned char *buf;
66   int size;
67};
68
69
70// internal socket structure
71struct xilsock_socket {
72   int type;
73   int domain;
74   int proto;
75   // status of socket
76   unsigned char listen:1;
77   unsigned char bound:1;
78   unsigned char accept:1;
79   unsigned char connect:1;
80   unsigned char free:1;
81   unsigned char closing:1;
82   unsigned char closed:1;
83   union {
84      struct xilnet_tcp_conn *tcp_conn;
85      struct xilnet_udp_conn *udp_conn;
86   } conn;
87   int *if_addr;                 // interface base addr
88   struct xilsock_buf recvbuf;     // structure for recv/send msgs
89};
90
91#define NO_OF_XILSOCKS   (MAX_TCP_CONNS+MAX_UDP_CONNS)
92extern struct xilsock_socket xilsock_sockets[NO_OF_XILSOCKS];
93
94
95/* #defines for TCP communication */
96#define XILSOCK_NEW_CONN        0x1
97#define XILSOCK_SYNACK_RCVD     0x2
98#define XILSOCK_TCP_DATA        0x4
99#define XILSOCK_TCP_ACK         0x8
100#define XILSOCK_EXISTING_CONN   0x10
101#define XILSOCK_CLOSE_CONN      0x20
102
103/* Functions of xilsock sockets */
104
105//#define xilsock_recvfrom xilsock_recv
106
107extern int xilsock_init(void);
108extern void xilsock_rel_socket(int);
109extern int xilsock_socket(int, int, int);
110int xilsock_bind(int sd, struct sockaddr* addr, int addrlen, void (*callback) ());
111extern int xilsock_listen(int, int);
112extern int xilsock_accept(int, struct sockaddr*, int*);
113extern int xilsock_recv(int, unsigned char*, unsigned int);
114extern int xilsock_recvfrom(int, unsigned char*, unsigned int, struct sockaddr* from, unsigned int *fromlen);
115extern int xilsock_sendto(int, unsigned char*, unsigned int, struct sockaddr* to, unsigned int tolen);
116extern int xilsock_send(int, unsigned char*, unsigned int);
117extern void xilsock_close(int);
118
119/*
120 * TCP/IP functions Prototype
121 */
122
123// Ethernet functions
124extern int xilnet_eth_recv_frame(unsigned char *, int);
125extern int xilnet_eth_send_frame(unsigned char *, int, unsigned char*, void*, unsigned short);
126extern void xilnet_eth_update_hw_tbl(unsigned char *, int);
127extern void xilnet_add_hw_tbl_entry(unsigned char *, unsigned char *);
128extern int xilnet_eth_get_hw_addr(unsigned char *);
129extern void xilnet_eth_init_hw_addr_tbl(void);
130extern int xilnet_eth_find_old_entry(void);
131
132// ARP functions
133extern int xilnet_arp(unsigned char*, int);
134extern void xilnet_arp_reply(unsigned char*, int);
135
136// IP functions
137extern void xilnet_ip_init(unsigned char*);
138extern int xilnet_ip(unsigned char*, int);
139extern void xilnet_ip_header(unsigned char*, int, int, unsigned char*);
140extern unsigned short xilnet_ip_calc_chksum(unsigned char*, int);
141
142// TCP/UDP/ICMP functions
143extern int xilnet_udp(unsigned char*, int);
144extern void xilnet_udp_header(struct xilnet_udp_conn*, unsigned char*, int);
145extern unsigned short xilnet_udp_tcp_calc_chksum(unsigned char*, int, unsigned char*, unsigned char*, unsigned short);
146extern void xilnet_udp_init_conns();
147int xilnet_udp_open_conn(unsigned short port,void (*callback) ());
148extern int xilnet_udp_close_conn(struct xilnet_udp_conn*);
149extern void xilnet_icmp_echo_reply(unsigned char *, unsigned int);
150extern int xilnet_icmp(unsigned char *, int);
151extern int xilnet_tcp(unsigned char*, int);
152extern void xilnet_tcp_header(struct xilnet_tcp_conn*, unsigned char*, int, unsigned char);
153extern void xilnet_tcp_send_pkt(struct xilnet_tcp_conn*, unsigned char*, int, unsigned char);
154extern void xilnet_tcp_init_conns();
155extern int xilnet_tcp_open_conn(unsigned short);
156extern int xilnet_tcp_close_conn(struct xilnet_tcp_conn*);
157
158/* buffers for sending and receiving packets */
159extern unsigned char recvbuf[];
160extern unsigned char sendbuf[];
161extern unsigned char node_ip_addr[IP_VERSION];
162extern unsigned char node_hw_addr[ETH_ADDR_LEN];
163extern int xilsock_status_flag;
164
165extern unsigned char sync_IP_octet;
166
167#ifdef __cplusplus
168}
169#endif
170
171#endif /* _XILSOCK_H_ */
Note: See TracBrowser for help on using the repository browser.