FreeBSD/sys/security/audit/bsm_token.c
/*
 * token ID                1 byte
 * argument #              1 byte
 * argument value          4 bytes/8 bytes (32-bit/64-bit value)
 * text length             2 bytes
 * text                    N bytes + 1 terminating NULL byte
 */
token ID                1 byte
argument #              1 byte
argument value          4 bytes/8 bytes (32-bit/64-bit value)
text length             2 bytes
text                    N bytes + 1 terminating NULL byte
token ID 1 byte argument # 1 byte argument value 4 bytes / 8 bytes ( 32 - bit / 64 - bit value ) text length 2 bytes text N bytes + 1 terminating NULL byte
token_t *
au_to_arg32(char n, const char *text, u_int32_t v)
{
	token_t *t;
	u_char *dptr = NULL;
	u_int16_t textlen;
	textlen = strlen(text);
	textlen += 1;
	GET_TOKEN_AREA(t, dptr, 2 * sizeof(u_char) + sizeof(u_int32_t) +
	    sizeof(u_int16_t) + textlen);
	ADD_U_CHAR(dptr, AUT_ARG32);
	ADD_U_CHAR(dptr, n);
	ADD_U_INT32(dptr, v);
	ADD_U_INT16(dptr, textlen);
	ADD_STRING(dptr, text, textlen);
	return (t);
}
token_t * au_to_arg32 ( char n , const char * text , u_int32_t v ) { token_t * t ; u_char * dptr = NULL ; u_int16_t textlen ; textlen = strlen ( text ) ; textlen += 1 ; GET_TOKEN_AREA ( t , dptr , 2 * sizeof ( u_char ) + sizeof ( u_int32_t ) + sizeof ( u_int16_t ) + textlen ) ; ADD_U_CHAR ( dptr , AUT_ARG32 ) ; ADD_U_CHAR ( dptr , n ) ; ADD_U_INT32 ( dptr , v ) ; ADD_U_INT16 ( dptr , textlen ) ; ADD_STRING ( dptr , text , textlen ) ; return ( t ) ; }
token ID                1 byte
 argument #              1 byte
 argument value          4 bytes/8 bytes (32-bit/64-bit value)
 text length             2 bytes
 text                    N bytes + 1 terminating NULL byte
token ID 1 byte argument # 1 byte argument value 4 bytes / 8 bytes ( 32 - bit / 64 - bit value ) text length 2 bytes text N bytes + 1 terminating NULL byte