#include <sys/un.h>
#include <errno.h>
+#include <sys/smack.h>
+
#include <FBase_StringConverter.h>
#include <FBaseDataType.h>
#include <FBaseLong.h>
SysTryReturnResult(NID_IO, serverSocket != -1, E_SYSTEM,
"Failed to create a socket.");
+ // SMACK (Add a * label to socket)
+ if(smack_fsetlabel(serverSocket, "@", SMACK_LABEL_IPOUT) != 0)
+ {
+ SysTryCatch(NID_IO, errno == EOPNOTSUPP, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] SMACK labeling failed");
+ SysLog(NID_IO, "Kernel doesn't have Smack.");
+ }
+
+ if(smack_fsetlabel(serverSocket, "*", SMACK_LABEL_IPIN) != 0)
+ {
+ SysTryCatch(NID_IO, errno == EOPNOTSUPP, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] SMACK labeling failed");
+ SysLog(NID_IO, "Kernel doesn't have Smack.");
+ }
+
bzero(&serverAddress, sizeof(serverAddress));
serverAddress.sun_family = AF_UNIX;
strncpy(serverAddress.sun_path, pSocketName, socketNameLength);