X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=docs%2Fafb-binding-references.md;h=0e30ffe7c40598fa6ddd38eea8b9d03ce25d6b4e;hb=d1e30006b071533ae2d1903251962d2dec452418;hp=d0a9a6d0d138ed14e87f180182b35fbdacb176df;hpb=bdff72f45e1d02f596595f6229d5bccf7c0827c2;p=src%2Fapp-framework-binder.git diff --git a/docs/afb-binding-references.md b/docs/afb-binding-references.md index d0a9a6d0..0e30ffe7 100644 --- a/docs/afb-binding-references.md +++ b/docs/afb-binding-references.md @@ -142,6 +142,8 @@ Broadcasting an event send it to any possible listener. * Thus, in the case where 'object' should remain available after * the function returns, the function 'json_object_get' shall be used. * + * Calling this function is only forbidden during preinit. + * * Returns the count of clients that received the event. */ int afb_daemon_broadcast_event(const char *name, struct json_object *object); @@ -149,6 +151,8 @@ int afb_daemon_broadcast_event(const char *name, struct json_object *object); /* * Creates an event of 'name' and returns it. * + * Calling this function is only forbidden during preinit. + * * See afb_event_is_valid to check if there is an error. */ struct afb_event afb_daemon_make_event(const char *name); @@ -228,11 +232,24 @@ bindings at its initialization. /* * Tells that it requires the API of "name" to exist * and if 'initialized' is not null to be initialized. + * Calling this function is only allowed within init. * Returns 0 in case of success or -1 in case of error. */ int afb_daemon_require_api(const char *name, int initialized) ``` +This function allows to give a different name to the binding. +It can be called during pre-init. + +```C +/* + * Set the name of the API to 'name'. + * Calling this function is only allowed within preinit. + * Returns 0 in case of success or -1 in case of error. + */ +int afb_daemon_rename_api(const char *name); +``` + ## Functions of class afb_service The following functions allow services to call verbs of other @@ -677,6 +694,39 @@ Instead, you should use the macros: void afb_req_verbose(struct afb_req req, int level, const char *file, int line, const char * func, const char *fmt, ...); ``` +The functions below allow a binding involved in the platform security +to explicitely check a permission of a client or to get the calling +application identity. + +```C +/* + * Check whether the 'permission' is granted or not to the client + * identified by 'req'. + * + * Returns 1 if the permission is granted or 0 otherwise. + */ +int afb_req_has_permission(struct afb_req req, const char *permission); + +/* + * Get the application identifier of the client application for the + * request 'req'. + * + * Returns the application identifier or NULL when the application + * can not be identified. + * + * The returned value if not NULL must be freed by the caller + */ +char *afb_req_get_application_id(struct afb_req req); + +/* + * Get the user identifier (UID) of the client application for the + * request 'req'. + * + * Returns -1 when the application can not be identified. + */ +int afb_req_get_uid(struct afb_req req); +``` + ## Logging macros The following macros must be used for logging: