ba_list_class_names() 関数には次の引数を渡します。
interface |
管理されているインタフェース名が入った文字列を指すポインタ (le0、hih0、hme0 など) |
classes |
ba_class_pair_t 型の構造体の配列を指すポインタ。これは、クラス名が書き込まれるバッファーである。クラスと親のペアごとに構造体が 1 つ存在する |
ba_class_pair_t 型の構造体は次のように定義されています。
typedef struct { ba_name_t parent; /* name of the parent */ ba_name_t child; /* name of the class */ } ba_class_pair_t; |
ba_class_pair_t 型の構造体には、次のように定義されている ba_name_t 型の構造体のペアが入ります。
typedef struct { char name[BA_NAMES_LEN + 1]; char padding[3]; u_short namelen; char padding2[2]; } ba_name_t; |
バッファーには、常にクラスの数に応じた十分なメモリーを割り当てる必要があります。次に例を示します。
int nclasses; ba_class_pairs_t *classesp; nclasses = ba_get_num_classes("hme0"); if (nclasses > 0) { classesp = (ba_class_pairs_t *) calloc(nclasses,sizeof ba_class_pairs_t); if (ba_list_class_names("hme0", classesp) != -1) { /* process classesp ... */ } else { /* error handling */ } free(classesp); } |