# This publication is intellectual property of Canonical Ltd. Its contents # can be duplicated, either in part or in whole, provided that a copyright # label is visibly located on each copy. # # All information found in this book has been compiled with utmost # attention to detail. However, this does not guarantee complete accuracy. # Neither Canonical Ltd, the authors, nor the translators shall be held # liable for possible errors or the consequences thereof. # # Many of the software and hardware descriptions cited in this book # are registered trademarks. All trade names are subject to copyright # restrictions and may be registered trade marks. Canonical Ltd. # essentially adhere to the manufacturer's spelling. # # Names of products and trademarks appearing in this book (with or without # specific notation) are likewise subject to trademark and trade protection # laws and may thus fall under copyright restrictions. # =pod =head1 NAME aa_features - an opaque object representing a set of AppArmor kernel features aa_features_new - create a new aa_features object based on a path aa_features_new_from_string - create a new aa_features object based on a string aa_features_new_from_kernel - create a new aa_features object based on the current kernel aa_features_ref - increments the ref count of an aa_features object aa_features_unref - decrements the ref count and frees the aa_features object when 0 aa_features_write_to_file - write a string representation of an aa_features object to a file aa_features_is_equal - equality test for two aa_features objects aa_features_supports - provides aa_features object support status =head1 SYNOPSIS B<#include Esys/apparmor.hE> B B B B B B B B B Link with B<-lapparmor> when compiling. =head1 DESCRIPTION The I object contains information about the AppArmor features supported by a kernel. The feature support information is based upon the files AppArmor represents in securityfs, which is typically found at /sys/kernel/security/apparmor/features/. That information may be parsed and turned into a string or flat file in order to represent a set of features of a kernel that is not currently running. The aa_features_new() function creates an I object based upon a directory file descriptor and path. The I can point to a file or directory. See the openat(2) man page for examples of I and I. The allocated I object must be freed using aa_features_unref(). The aa_features_new_from_string() function is similar except that it accepts a NUL-terminated string representation of the AppArmor features as the I argument. The length of the features string, not counting the NUL-terminator, must be specified as the I argument. The allocated I object must be freed using aa_features_unref(). The aa_features_new_from_kernel() function creates an I object from the current running kernel. The allocated I object must be freed using aa_features_unref(). aa_features_ref() increments the reference count on the I object. aa_features_unref() decrements the reference count on the I object and releases all corresponding resources when the reference count reaches zero. The aa_features_write_to_file() function writes a string representation of the I object to the file specified by the I and I combination. aa_features_is_equal() can be used to detect if the I and I objects are equal. The definition of equality is private to libapparmor and may be changed in ways that do not break backward compatibility. The aa_features_supports() function can be used to query the I object to determine if a feature is supported. The I argument should be equal to the path, relative to the "apparmor/features/" directory of securityfs, of the feature to query. For example, to test if policy version 6 is supported, I would be "policy/versions/v6". =head1 RETURN VALUE The aa_features_new() family of functions return 0 on success and I<*features> will point to an I object that must be freed by aa_features_unref(). -1 is returned on error, with errno set appropriately, and I<*features> will be set to NULL. aa_features_ref() returns the value of I. aa_features_write_to_file() returns 0 on success. -1 is returned on error, with errno set appropriately. aa_features_is_equal() returns true if I and I are equal and false if they are not equal. aa_features_supports() returns true if the feature represented by I is supported and false if it is not supported. =head1 ERRORS The errno value will be set according to the underlying error in the I family of functions that return -1 on error. =head1 NOTES All aa_features functions described above are present in libapparmor version 2.10 and newer. =head1 BUGS None known. If you find any, please report them at L. =head1 SEE ALSO openat(2) and L. =cut