Lines Matching refs:priv
30 struct eth_sandbox_raw_priv *priv) in _raw_packet_start() argument
38 priv->device = malloc(sizeof(struct sockaddr_ll)); in _raw_packet_start()
39 if (priv->device == NULL) in _raw_packet_start()
41 device = priv->device; in _raw_packet_start()
49 priv->sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); in _raw_packet_start()
50 if (priv->sd < 0) { in _raw_packet_start()
56 ret = setsockopt(priv->sd, SOL_SOCKET, SO_BINDTODEVICE, ifname, in _raw_packet_start()
65 flags = fcntl(priv->sd, F_GETFL, 0); in _raw_packet_start()
66 fcntl(priv->sd, F_SETFL, flags | O_NONBLOCK); in _raw_packet_start()
71 ret = setsockopt(priv->sd, SOL_PACKET, PACKET_ADD_MEMBERSHIP, in _raw_packet_start()
84 if (ioctl(priv->sd, SIOCGIFFLAGS, &ifr) < 0) { in _raw_packet_start()
90 if (ioctl(priv->sd, SIOCSIFFLAGS, &ifr) < 0) { in _raw_packet_start()
99 static int _local_inet_start(struct eth_sandbox_raw_priv *priv) in _local_inet_start() argument
107 priv->device = malloc(sizeof(struct sockaddr_in)); in _local_inet_start()
108 if (priv->device == NULL) in _local_inet_start()
110 device = priv->device; in _local_inet_start()
121 priv->sd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP); in _local_inet_start()
122 if (priv->sd < 0) { in _local_inet_start()
129 flags = fcntl(priv->sd, F_GETFL, 0); in _local_inet_start()
130 fcntl(priv->sd, F_SETFL, flags | O_NONBLOCK); in _local_inet_start()
133 ret = setsockopt(priv->sd, IPPROTO_IP, IP_HDRINCL, &one, in _local_inet_start()
140 priv->local_bind_sd = -1; in _local_inet_start()
141 priv->local_bind_udp_port = 0; in _local_inet_start()
146 struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_start() argument
148 if (priv->local) in sandbox_eth_raw_os_start()
149 return _local_inet_start(priv); in sandbox_eth_raw_os_start()
151 return _raw_packet_start(ifname, ethmac, priv); in sandbox_eth_raw_os_start()
155 struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_send() argument
160 if (!priv->sd || !priv->device) in sandbox_eth_raw_os_send()
176 if (priv->local && (priv->local_bind_sd == -1 || in sandbox_eth_raw_os_send()
177 priv->local_bind_udp_port != udph->source)) { in sandbox_eth_raw_os_send()
181 if (priv->local_bind_sd != -1) in sandbox_eth_raw_os_send()
182 close(priv->local_bind_sd); in sandbox_eth_raw_os_send()
185 priv->local_bind_sd = socket(AF_INET, SOCK_DGRAM, 0); in sandbox_eth_raw_os_send()
186 if (priv->local_bind_sd < 0) { in sandbox_eth_raw_os_send()
191 priv->local_bind_udp_port = udph->source; in sandbox_eth_raw_os_send()
201 retval = bind(priv->local_bind_sd, (struct sockaddr *)&addr, in sandbox_eth_raw_os_send()
208 retval = sendto(priv->sd, packet, length, 0, in sandbox_eth_raw_os_send()
209 (struct sockaddr *)priv->device, in sandbox_eth_raw_os_send()
220 const struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_recv() argument
225 if (!priv->sd || !priv->device) in sandbox_eth_raw_os_recv()
228 retval = recvfrom(priv->sd, packet, 1536, 0, in sandbox_eth_raw_os_recv()
229 (struct sockaddr *)priv->device, in sandbox_eth_raw_os_recv()
242 void sandbox_eth_raw_os_stop(struct eth_sandbox_raw_priv *priv) in sandbox_eth_raw_os_stop() argument
244 free(priv->device); in sandbox_eth_raw_os_stop()
245 priv->device = NULL; in sandbox_eth_raw_os_stop()
246 close(priv->sd); in sandbox_eth_raw_os_stop()
247 priv->sd = -1; in sandbox_eth_raw_os_stop()
248 if (priv->local) { in sandbox_eth_raw_os_stop()
249 if (priv->local_bind_sd != -1) in sandbox_eth_raw_os_stop()
250 close(priv->local_bind_sd); in sandbox_eth_raw_os_stop()
251 priv->local_bind_sd = -1; in sandbox_eth_raw_os_stop()
252 priv->local_bind_udp_port = 0; in sandbox_eth_raw_os_stop()