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