MCPcopy Create free account
hub / github.com/F-Stack/f-stack / NgRecvData

Function NgRecvData

tools/libnetgraph/sock.c:219–251  ·  view source on GitHub ↗

* Read a packet from a data socket * Returns -1 if error and sets errno. */

Source from the content-addressed store, hash-verified

217 * Returns -1 if error and sets errno.
218 */
219int
220NgRecvData(int ds, u_char * buf, size_t len, char *hook)
221{
222 u_char frombuf[NG_HOOKSIZ + NGSA_OVERHEAD];
223 struct sockaddr_ng *const from = (struct sockaddr_ng *) frombuf;
224 socklen_t fromlen = sizeof(frombuf);
225 int rtn, errnosv;
226
227 /* Read packet */
228 rtn = recvfrom(ds, buf, len, 0, (struct sockaddr *) from, &fromlen);
229 if (rtn < 0) {
230 errnosv = errno;
231 if (_gNgDebugLevel >= 1)
232 NGLOG("recvfrom");
233 errno = errnosv;
234 return (-1);
235 }
236
237 /* Copy hook name */
238 if (hook != NULL)
239 strlcpy(hook, from->sg_data, NG_HOOKSIZ);
240
241 /* Debugging */
242 if (_gNgDebugLevel >= 2) {
243 NGLOGX("READ %s from hook \"%s\" (%d bytes)",
244 rtn ? "PACKET" : "EOF", from->sg_data, rtn);
245 if (_gNgDebugLevel >= 3)
246 _NgDebugBytes(buf, rtn);
247 }
248
249 /* Done */
250 return (rtn);
251}
252
253/*
254 * Identical to NgRecvData() except buffer is dynamically allocated.

Callers 1

NgAllocRecvDataFunction · 0.85

Calls 3

recvfromFunction · 0.85
_NgDebugBytesFunction · 0.85
strlcpyFunction · 0.50

Tested by

no test coverage detected