On Wed, Apr 16, 2014 at 02:06:22PM +0200, Alvaro Neira Ayuso wrote:
+/*
- In succesfully case, this function set again the pointers of the l2h and l3h
- of the OML message that we have received. In other case, we don't set the
- pointers of l2h and l3h
- */
+static int check_oml_msg(struct msgb *msg) +{
- msg->l2h = msg->data;
...
- if (msg->len < abis_oml_hdr_len)
return -1;- msg->l3h = msg->data + sizeof(struct abis_om_hdr);
- if (omh->mdisc != ABIS_OM_MDISC_FOM)
return -1;
Code and comment do not match. This is why I asked you to say that in the error case the behavior is undefined. The other option would be to re-set l2h/l3h to NULL to make the code match your description. In terms of structure I had thought of a documentation like this:
/** * \brief Check that the data in \param msg is a proper OML message * * This function verifies that the data in \param in msg is a proper * OML message and can be handled by later functions. In the successful * case the msg->l2h will now point to the OML header and the msg->l3h * will point to the FOM header. The value of l2h/l3h is undefined in * case the verification of the \param msg is failing. * * \param msg The message to analyze. msg->len starting from msg->data * will be analyzed. * \return This function returns X on success and Y on failure. */