Solaris Bandwidth Manager 1.6 の開発

引数

ba_list_class_names() 関数には次の引数を渡します。

interface

管理されているインタフェース名が入った文字列を指すポインタ (le0hih0hme0 など)

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);
}