typedef struct _mib_info{
int mib_vartype;
Bool mib_writable;
Bool mib_varleaf;
int (*mib_func)( struct _mib_info *, char );//pointer
char *mib_func_param;
struct _mib_info *mib_info_next;
}mib_info;
mib_info mib[] = {
{ 2, FALSE, NLEAF, snleaf, 0, 0}, //
} ;
/*--------------------------------------------
There is a mistake in GetID():indirect call: parameters do not fit within registers
----------------------------------------------*/
GetID(){
.........
if( ((*pmib_info->mib_info_next->mib_func)(pmib_info->mib_info_next , SOP_GETF ) )
.....
}

You don't need the '(*' and ')' in the call, just use:

if (pmib_info->mib_info_next->mib_func(pmib_info->mib_info_next , SOP_GETF ))