| 388 | } |
| 389 | |
| 390 | void * |
| 391 | ff_mbuf_get(void *p, void *m, void *data, uint16_t len) |
| 392 | { |
| 393 | struct mbuf *prev = (struct mbuf *)p; |
| 394 | struct mbuf *mb = m_get(M_NOWAIT, MT_DATA); |
| 395 | |
| 396 | if (mb == NULL) { |
| 397 | return NULL; |
| 398 | } |
| 399 | |
| 400 | m_extadd(mb, data, len, ff_mbuf_ext_free, m, NULL, 0, EXT_DISPOSABLE); |
| 401 | |
| 402 | mb->m_next = NULL; |
| 403 | mb->m_nextpkt = NULL; |
| 404 | mb->m_len = len; |
| 405 | |
| 406 | if (prev != NULL) { |
| 407 | prev->m_next = mb; |
| 408 | } |
| 409 | |
| 410 | return (void *)mb; |
| 411 | } |
| 412 | |
| 413 | void |
| 414 | ff_veth_process_packet(void *arg, void *m) |
no test coverage detected