Trusted Solaris 開発ガイド

共有メモリーラベルの使用

この例は、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]