xref: /rk3399_rockchip-uboot/arch/sandbox/include/asm/eth-raw-os.h (revision b939689c7b87773c44275a578ffc8674a867e39d)
1a346ca79SJoe Hershberger /*
2a346ca79SJoe Hershberger  * Copyright (c) 2015 National Instruments
3a346ca79SJoe Hershberger  *
4a346ca79SJoe Hershberger  * (C) Copyright 2015
5a346ca79SJoe Hershberger  * Joe Hershberger <joe.hershberger@ni.com>
6a346ca79SJoe Hershberger  *
7a346ca79SJoe Hershberger  * SPDX-License-Identifier:	GPL-2.0
8a346ca79SJoe Hershberger  */
9a346ca79SJoe Hershberger 
10a346ca79SJoe Hershberger #ifndef __ETH_RAW_OS_H
11a346ca79SJoe Hershberger #define __ETH_RAW_OS_H
12a346ca79SJoe Hershberger 
13a346ca79SJoe Hershberger /**
14a346ca79SJoe Hershberger  * struct eth_sandbox_raw_priv - raw socket session
15a346ca79SJoe Hershberger  *
16a346ca79SJoe Hershberger  * sd: socket descriptor - the open socket during a session
17a346ca79SJoe Hershberger  * device: struct sockaddr_ll - the host interface packets move to/from
18*22f68524SJoe Hershberger  * local: 1 or 0 to select the local interface ('lo') or not
19*22f68524SJoe Hershberger  * local_bindsd: socket descriptor to prevent the kernel from sending
20*22f68524SJoe Hershberger  *		 a message to the server claiming the port is
21*22f68524SJoe Hershberger  *		 unreachable
22*22f68524SJoe Hershberger  * local_bind_udp_port: The UDP port number that we bound to
23a346ca79SJoe Hershberger  */
24a346ca79SJoe Hershberger struct eth_sandbox_raw_priv {
25a346ca79SJoe Hershberger 	int sd;
26a346ca79SJoe Hershberger 	void *device;
27*22f68524SJoe Hershberger 	int local;
28*22f68524SJoe Hershberger 	int local_bind_sd;
29*22f68524SJoe Hershberger 	unsigned short local_bind_udp_port;
30a346ca79SJoe Hershberger };
31a346ca79SJoe Hershberger 
32a346ca79SJoe Hershberger int sandbox_eth_raw_os_start(const char *ifname, unsigned char *ethmac,
33a346ca79SJoe Hershberger 			    struct eth_sandbox_raw_priv *priv);
34a346ca79SJoe Hershberger int sandbox_eth_raw_os_send(void *packet, int length,
35*22f68524SJoe Hershberger 			    struct eth_sandbox_raw_priv *priv);
36a346ca79SJoe Hershberger int sandbox_eth_raw_os_recv(void *packet, int *length,
37a346ca79SJoe Hershberger 			    const struct eth_sandbox_raw_priv *priv);
38a346ca79SJoe Hershberger void sandbox_eth_raw_os_stop(struct eth_sandbox_raw_priv *priv);
39a346ca79SJoe Hershberger 
40a346ca79SJoe Hershberger #endif /* __ETH_RAW_OS_H */
41