• Home
  • Raw
  • Download

Lines Matching refs:priv

29 			    struct eth_sandbox_raw_priv *priv)  in _raw_packet_start()  argument
37 priv->device = malloc(sizeof(struct sockaddr_ll)); in _raw_packet_start()
38 if (priv->device == NULL) in _raw_packet_start()
40 device = priv->device; in _raw_packet_start()
48 priv->sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); in _raw_packet_start()
49 if (priv->sd < 0) { in _raw_packet_start()
55 ret = setsockopt(priv->sd, SOL_SOCKET, SO_BINDTODEVICE, ifname, in _raw_packet_start()
64 flags = fcntl(priv->sd, F_GETFL, 0); in _raw_packet_start()
65 fcntl(priv->sd, F_SETFL, flags | O_NONBLOCK); in _raw_packet_start()
70 ret = setsockopt(priv->sd, SOL_PACKET, PACKET_ADD_MEMBERSHIP, in _raw_packet_start()
83 if (ioctl(priv->sd, SIOCGIFFLAGS, &ifr) < 0) { in _raw_packet_start()
89 if (ioctl(priv->sd, SIOCSIFFLAGS, &ifr) < 0) { in _raw_packet_start()
98 static int _local_inet_start(struct eth_sandbox_raw_priv *priv) in _local_inet_start() argument
106 priv->device = malloc(sizeof(struct sockaddr_in)); in _local_inet_start()
107 if (priv->device == NULL) in _local_inet_start()
109 device = priv->device; in _local_inet_start()
120 priv->sd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP); in _local_inet_start()
121 if (priv->sd < 0) { in _local_inet_start()
128 flags = fcntl(priv->sd, F_GETFL, 0); in _local_inet_start()
129 fcntl(priv->sd, F_SETFL, flags | O_NONBLOCK); in _local_inet_start()
132 ret = setsockopt(priv->sd, IPPROTO_IP, IP_HDRINCL, &one, in _local_inet_start()
139 priv->local_bind_sd = -1; in _local_inet_start()
140 priv->local_bind_udp_port = 0; in _local_inet_start()
145 struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_start() argument
147 if (priv->local) in sandbox_eth_raw_os_start()
148 return _local_inet_start(priv); in sandbox_eth_raw_os_start()
150 return _raw_packet_start(ifname, ethmac, priv); in sandbox_eth_raw_os_start()
154 struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_send() argument
159 if (!priv->sd || !priv->device) in sandbox_eth_raw_os_send()
175 if (priv->local && (priv->local_bind_sd == -1 || in sandbox_eth_raw_os_send()
176 priv->local_bind_udp_port != udph->source)) { in sandbox_eth_raw_os_send()
180 if (priv->local_bind_sd != -1) in sandbox_eth_raw_os_send()
181 close(priv->local_bind_sd); in sandbox_eth_raw_os_send()
184 priv->local_bind_sd = socket(AF_INET, SOCK_DGRAM, 0); in sandbox_eth_raw_os_send()
185 if (priv->local_bind_sd < 0) { in sandbox_eth_raw_os_send()
190 priv->local_bind_udp_port = udph->source; in sandbox_eth_raw_os_send()
200 retval = bind(priv->local_bind_sd, (struct sockaddr *)&addr, in sandbox_eth_raw_os_send()
207 retval = sendto(priv->sd, packet, length, 0, in sandbox_eth_raw_os_send()
208 (struct sockaddr *)priv->device, in sandbox_eth_raw_os_send()
219 const struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_recv() argument
224 if (!priv->sd || !priv->device) in sandbox_eth_raw_os_recv()
227 retval = recvfrom(priv->sd, packet, 1536, 0, in sandbox_eth_raw_os_recv()
228 (struct sockaddr *)priv->device, in sandbox_eth_raw_os_recv()
241 void sandbox_eth_raw_os_stop(struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_stop() argument
243 free(priv->device); in sandbox_eth_raw_os_stop()
244 priv->device = NULL; in sandbox_eth_raw_os_stop()
245 close(priv->sd); in sandbox_eth_raw_os_stop()
246 priv->sd = -1; in sandbox_eth_raw_os_stop()
247 if (priv->local) { in sandbox_eth_raw_os_stop()
248 if (priv->local_bind_sd != -1) in sandbox_eth_raw_os_stop()
249 close(priv->local_bind_sd); in sandbox_eth_raw_os_stop()
250 priv->local_bind_sd = -1; in sandbox_eth_raw_os_stop()
251 priv->local_bind_udp_port = 0; in sandbox_eth_raw_os_stop()