この例は、Confidential で共有メモリー領域の識別子を作成し、この同じ共有メモリー領域の CMW ラベルを取得します。このプログラムは、Top Secret で動作しています。
#include <sys/tsol/ipc.h>
#include <sys/types.h>
#include <tsol/label.h>
#include <sys/shm.h>
main()
{
int id, retval, error, pid;
bclabel_t cmwlabel;
bslabel_t senslabel;
char *string = (char *)0;
retval = stobsl("CONFIDENTIAL", &senslabel, NEW_LABEL, &error);
/* Confidential の共有メモリー領域を作成する */
/* 有効セット内で ipc_mac_write をオン (有効) にする */
id = shmgetl(IPC_PRIVATE, 256, IPC_CREAT|0666, &senslabel);
/* ipc_mac_write をオフ (無効) にする */
/* 共有メモリー領域の CMW ラベルを得る */
/* 有効セット内で ipc_mac_read をオン (有効) にする */
retval = getshmcmwlabel(id, &cmwlabel);
/* ipc_mac_read をオフ (無効) にする */
/* CMW ラベルを出力する */
bcltos(&cmwlabel, &string, 0, LONG_WORDS);
printf("CMW label = %s¥n", string);
}
printf(1) 文によって、次のように出力されます。
CMW label = UNCLASSIFIED[C]