Copyright (c) 2004 Hartmut Brandt. All rights reserved. Author: Hartmut Brandt <harti@FreeBSD.org> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and th...
NAMEngatmbase - netgraph ATM utility module
SYNOPSISIn netnatm/unimsg.h In netgraph/atm/ngatmbase.h Ft struct mbuf * Fn uni_msg_pack_mbuf struct uni_msg *msg void *hdr size_t len Ft struct uni_msg * Fn uni_msg_alloc size_t len Ft struct uni_msg * Fn uni_msg_build void *buf ... Ft void Fn uni_msg_destroy struct uni_msg *msg Ft int Fn uni_msg_unpack_mbuf struct mbuf *m struct uni_msg *msgp
DESCRIPTIONThis module provides utility functions for the handling of signalling messages to the NgATM modules.
The Fn uni_msg_pack_mbuf function packs a message into one or several Vt mbuf Ns s optionally prepending a header. The header is given by its address Fa hdr and length Fa len . If Fa hdr is NULL or Fa len equals 0, no header is prepended. Either Fa msg or Fa hdr may be NULL but not both. The Fn uni_msg_pack_mbuf function returns a pointer to the allocated Vt mbuf chain or NULL in the case of an error.
The Fn uni_msg_alloc function allocates a new message with space for at least Fa len bytes. In the case of an error NULL is returned.
The Fn uni_msg_build function constructs a message from pieces. Each piece is given by a pair of arguments, the first of type Vt void * and the second a Vt size_t . The list of pieces must be terminated by Po Vt void * Pc Ns Dv NULL .
The Fn uni_msg_destroy function destroys the messages and frees all the messages's memory.
The Fn uni_msg_unpack_mbuf function unpacks an Vt mbuf chain info a Vt uni_msg . A pointer to the newly allocated message is stored in Fa msgp and 0 is returned. In the case of an error (either when no packet header is found in the first mbuf or memory cannot be allocated) the function returns an appropriate error code.