diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2007-04-03 19:08:00 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2007-04-03 19:08:00 +0000 |
commit | 9709011a9b553b9c3a9db0931366b6216b7ba4c6 (patch) | |
tree | 1ede0f1dc1100843504dacfa6fdfdf154ef95549 /epan/uat.h | |
parent | 8177d0f4a9242b0dd1b6c6a3aca63c819d1bda4c (diff) |
Implement a proposal from Elefterios Gabriel for SCCP:
Add a table of DPCs and SSNs that allow to override the protocol that would be choosen
so that the same SSN can use two different protocols in two different DPCs.
I did not believe it someone could have done it, then I saw the captures...
svn path=/trunk/; revision=21321
Diffstat (limited to 'epan/uat.h')
-rw-r--r-- | epan/uat.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/epan/uat.h b/epan/uat.h index 946d930682..8f81f70db4 100644 --- a/epan/uat.h +++ b/epan/uat.h @@ -203,6 +203,7 @@ typedef struct _uat_field_t { #define UAT_CAT_GENERAL "General" +#define UAT_CAT_PORTS "Port Assignments" #define UAT_CAT_CRYPTO "Decryption" #define UAT_CAT_FFMT "File Formats" @@ -260,6 +261,7 @@ gboolean uat_fld_chk_proto(void*, const char*, unsigned, void*,void*, char** err gboolean uat_fld_chk_num_dec(void*, const char*, unsigned, void*, void*, char** err); gboolean uat_fld_chk_num_hex(void*, const char*, unsigned, void*, void*, char** err); gboolean uat_fld_chk_enum(void*, const char*, unsigned, void*, void*, char**); +gboolean uat_fld_chk_range(void*, const char*, unsigned, void*, void*, char**); #define CHK_STR_IS_DECL(what) \ gboolean uat_fld_chk_str_ ## what (void*, const char*, unsigned, void*, void*, char**) @@ -433,6 +435,28 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, #define UAT_FLD_PROTO(basename,field_name,desc) \ {#field_name, PT_TXTMOD_STRING,{uat_fld_chk_proto,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},{0,0,0},0,desc,FLDFILL} +/* + * RANGE macros + */ + +#define UAT_RANGE_CB_DEF(basename,field_name,rec_t) \ +static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, unsigned len, void* u1 _U_, void* u2) {\ + char* rng = ep_strndup(buf,len);\ + range_convert_str(&(((rec_t*)rec)->field_name), rng,GPOINTER_TO_UINT(u2)); \ + } \ +static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, void* u1 _U_, void* u2 _U_) {\ + if ( ((rec_t*)rec)->field_name ) { \ + *out_ptr = range_convert_range(((rec_t*)rec)->field_name); *out_len = strlen(*out_ptr); \ + } else { \ + *out_ptr = ""; *out_len = 0; } } + + +#define UAT_FLD_RANGE(basename,field_name,max,desc) \ + {#field_name, PT_TXTMOD_STRING,{uat_fld_chk_range,basename ## _ ## field_name ## _set_cb,basename ## _ ## field_name ## _tostr_cb},\ + {GUINT_TO_POINTER(max),GUINT_TO_POINTER(max),GUINT_TO_POINTER(max)},0,desc,FLDFILL} + + + #endif |