Expect object handling

## Functions

struct nf_expect * | nfexp_new (void)
void | nfexp_destroy (struct nf_expect *exp)
size_t | nfexp_sizeof (const struct nf_expect *exp)
size_t | nfexp_maxsize (void)
struct nf_expect * | nfexp_clone (const struct nf_expect *exp)
int | nfexp_cmp (const struct nf_expect *exp1, const struct nf_expect *exp2, unsigned int flags)
void | nfexp_set_attr (struct nf_expect *exp, const enum nf_expect_attr type, const void *value)
void | nfexp_set_attr_u8 (struct nf_expect *exp, const enum nf_expect_attr type, uint8_t value)
void | nfexp_set_attr_u16 (struct nf_expect *exp, const enum nf_expect_attr type, uint16_t value)
void | nfexp_set_attr_u32 (struct nf_expect *exp, const enum nf_expect_attr type, uint32_t value)
const void * | nfexp_get_attr (const struct nf_expect *exp, const enum nf_expect_attr type)
uint8_t | nfexp_get_attr_u8 (const struct nf_expect *exp, const enum nf_expect_attr type)
uint16_t | nfexp_get_attr_u16 (const struct nf_expect *exp, const enum nf_expect_attr type)
uint32_t | nfexp_get_attr_u32 (const struct nf_expect *exp, const enum nf_expect_attr type)
int | nfexp_attr_is_set (const struct nf_expect *exp, const enum nf_expect_attr type)
int | nfexp_attr_unset (struct nf_expect *exp, const enum nf_expect_attr type)
int | nfexp_snprintf (char *buf, unsigned int size, const struct nf_expect *exp, unsigned int msg_type, unsigned int out_type, unsigned int flags)

## Detailed Description

## Function Documentation

## nfexp_attr_is_set()

int nfexp_attr_is_set | ( | const struct nf_expect * | exp,
|  | const enum nf_expect_attr | type )

nfexp_attr_is_set - check if a certain attribute is set

Parameters

  exp | pointer to a valid expectation object
  type | attribute type

On error, -1 is returned and errno is set appropiately, otherwise the value of the attribute is returned.

Definition at line 446 of file expect/api.c.

## nfexp_attr_unset()

int nfexp_attr_unset | ( | struct nf_expect * | exp,
|  | const enum nf_expect_attr | type )

nfexp_attr_unset - unset a certain attribute

Parameters

  type | attribute type
  exp | pointer to a valid expectation object

On error, -1 is returned and errno is set appropiately, otherwise 0 is returned.

Definition at line 466 of file expect/api.c.

## nfexp_clone()

struct nf_expect * nfexp_clone | ( | const struct nf_expect * | exp | ) |

nfexp_clone - clone a expectation object

Parameters

  exp | pointer to a valid expectation object

On error, NULL is returned and errno is appropiately set. Otherwise, a valid pointer to the clone expect is returned.

Definition at line 89 of file expect/api.c.

## nfexp_cmp()

int nfexp_cmp | ( | const struct nf_expect * | exp1,
|  | const struct nf_expect * | exp2,
|  | unsigned int | flags )

nfexp_cmp - compare two expectation objects

Parameters

  exp1 | pointer to a valid expectation object
  exp2 | pointer to a valid expectation object
  flags | flags

This function only compare attribute set in both objects, by default the comparison is not strict, ie. if a certain attribute is not set in one of the objects, then such attribute is not used in the comparison. If you want more strict comparisons, you can use the appropriate flags to modify this behaviour (see NFCT_CMP_STRICT and NFCT_CMP_MASK).

The available flags are:

- NFCT_CMP_STRICT: the compared objects must have the same attributes and the same values, otherwise it returns that the objects are different.
- NFCT_CMP_MASK: the first object is used as mask, this means that if an attribute is present in exp1 but not in exp2, this function returns that the objects are different.

Other existing flags that are used by nfct_cmp() are ignored.

If both conntrack object are equal, this function returns 1, otherwise 0 is returned.

Definition at line 127 of file expect/api.c.

## nfexp_destroy()

void nfexp_destroy | ( | struct nf_expect * | exp | ) |

nfexp_destroy - release an expectation object

Parameters

  exp | pointer to the expectation object

Definition at line 46 of file expect/api.c.

## nfexp_get_attr()

const void * nfexp_get_attr | ( | const struct nf_expect * | exp,
|  | const enum nf_expect_attr | type )

nfexp_get_attr - get an expect attribute

Parameters

  exp | pointer to a valid expect
  type | attribute type

In case of success a valid pointer to the attribute requested is returned, on error NULL is returned and errno is set appropiately.

Definition at line 372 of file expect/api.c.

## nfexp_get_attr_u16()

uint16_t nfexp_get_attr_u16 | ( | const struct nf_expect * | exp,
|  | const enum nf_expect_attr | type )

nfexp_get_attr_u16 - get attribute of unsigned 16-bits long

Parameters

  exp | pointer to a valid expectation
  type | attribute type

Returns the value of the requested attribute, if the attribute is not set, 0 is returned. In order to check if the attribute is set or not, use nfexp_attr_is_set.

Definition at line 415 of file expect/api.c.

## nfexp_get_attr_u32()

uint32_t nfexp_get_attr_u32 | ( | const struct nf_expect * | exp,
|  | const enum nf_expect_attr | type )

nfexp_get_attr_u32 - get attribute of unsigned 32-bits long

Parameters

  exp | pointer to a valid expectation
  type | attribute type

Returns the value of the requested attribute, if the attribute is not set, 0 is returned. In order to check if the attribute is set or not, use nfexp_attr_is_set.

Definition at line 431 of file expect/api.c.

## nfexp_get_attr_u8()

uint8_t nfexp_get_attr_u8 | ( | const struct nf_expect * | exp,
|  | const enum nf_expect_attr | type )

nfexp_get_attr_u8 - get attribute of unsigned 8-bits long

Parameters

  exp | pointer to a valid expectation
  type | attribute type

Returns the value of the requested attribute, if the attribute is not set, 0 is returned. In order to check if the attribute is set or not, use nfexp_attr_is_set.

Definition at line 399 of file expect/api.c.

## nfexp_maxsize()

size_t nfexp_maxsize | ( | void |  | ) |

nfexp_maxsize - return the maximum size in bytes of a expect object

Use this function if you want to allocate a expect object in the stack instead of the heap. For example:

char buf[nfexp_maxsize()]; struct nf_expect *exp = (struct nf_expect *) buf; memset(exp, 0, nfexp_maxsize());

Note: As for now this function returns the same size that nfexp_sizeof(exp) does although this could change in the future. Therefore, do not assume that nfexp_sizeof(exp) == nfexp_maxsize().

Definition at line 77 of file expect/api.c.

## nfexp_new()

struct nf_expect * nfexp_new | ( | void |  | ) |

nfexp_new - allocate a new expectation

In case of success, this function returns a valid pointer to a memory blob, otherwise NULL is returned and errno is set appropiately.

Definition at line 29 of file expect/api.c.

## nfexp_set_attr()

void nfexp_set_attr | ( | struct nf_expect * | exp,
|  | const enum nf_expect_attr | type,
|  | const void * | value )

nfexp_set_attr - set the value of a certain expect attribute

Parameters

  exp | pointer to a valid expect
  type | attribute type
  value | pointer to the attribute value

Note that certain attributes are unsettable:

- ATTR_EXP_USE
- ATTR_EXP_ID
- ATTR_EXP_*_COUNTER_* The call of this function for such attributes do nothing.

Definition at line 309 of file expect/api.c.

## nfexp_set_attr_u16()

void nfexp_set_attr_u16 | ( | struct nf_expect * | exp,
|  | const enum nf_expect_attr | type,
|  | uint16_t | value )

nfexp_set_attr_u16 - set the value of a certain expect attribute

Parameters

  exp | pointer to a valid expect
  type | attribute type
  value | unsigned 16 bits attribute value

Definition at line 344 of file expect/api.c.

## nfexp_set_attr_u32()

void nfexp_set_attr_u32 | ( | struct nf_expect * | exp,
|  | const enum nf_expect_attr | type,
|  | uint32_t | value )

nfexp_set_attr_u32 - set the value of a certain expect attribute

Parameters

  exp | pointer to a valid expect
  type | attribute type
  value | unsigned 32 bits attribute value

Definition at line 357 of file expect/api.c.

## nfexp_set_attr_u8()

void nfexp_set_attr_u8 | ( | struct nf_expect * | exp,
|  | const enum nf_expect_attr | type,
|  | uint8_t | value )

nfexp_set_attr_u8 - set the value of a certain expect attribute

Parameters

  exp | pointer to a valid expect
  type | attribute type
  value | unsigned 8 bits attribute value

Definition at line 331 of file expect/api.c.

## nfexp_sizeof()

size_t nfexp_sizeof | ( | const struct nf_expect * | exp | ) |

nfexp_sizeof - return the size in bytes of a certain expect object

Parameters

  exp | pointer to the expect object

Definition at line 57 of file expect/api.c.

## nfexp_snprintf()

int nfexp_snprintf | ( | char * | buf,
|  | unsigned int | size,
|  | const struct nf_expect * | exp,
|  | unsigned int | msg_type,
|  | unsigned int | out_type,
|  | unsigned int | flags )

nfexp_snprintf - print a conntrack object to a buffer

Parameters

  buf | buffer used to build the printable conntrack
  size | size of the buffer
  exp | pointer to a valid expectation object
  message_type | print message type (NFEXP_T_UNKNOWN, NFEXP_T_NEW,...)
  output_type | print type (NFEXP_O_DEFAULT, NFEXP_O_XML, ...)
  flags | extra flags for the output type (NFEXP_OF_LAYER3)

If you are listening to events, probably you want to display the message type as well. In that case, set the message type parameter to any of the known existing types, ie. NFEXP_T_NEW, NFEXP_T_UPDATE, NFEXP_T_DESTROY. If you pass NFEXP_T_UNKNOWN, the message type will not be output.

Currently, the output available are:

- NFEXP_O_DEFAULT: default /proc-like output
- NFEXP_O_XML: XML output

The output flags are:

- NFEXP_O_LAYER: include layer 3 information in the output, this is only required by NFEXP_O_DEFAULT.

On error, -1 is returned and errno is set appropiately. Otherwise the size of what would be written is returned, even if the size of the buffer is insufficient. This behaviour is similar to snprintf.

Definition at line 802 of file expect/api.c.