SET(TARGET_LIB_CYNARA_ASYNC "cynara-client-async")
SET(TARGET_LIB_CYNARA_COMMON "cynara-client-commons")
SET(TARGET_LIB_CYNARA_ADMIN "cynara-admin")
+SET(TARGET_LIB_CYNARA_AGENT "cynara-agent")
SET(TARGET_CYNARA_COMMON "cynara-commons")
SET(TARGET_CYNARA_TESTS "cynara-tests")
SET(TARGET_LIB_CREDS_COMMONS "cynara-creds-commons")
Source1003: libcynara-client-async.manifest
Source1004: libcynara-admin.manifest
Source1005: cynara-tests.manifest
-Source1006: libcynara-client-commons.manifest
-Source1007: libcynara-commons.manifest
-Source1008: libcynara-creds-commons.manifest
-Source1009: libcynara-creds-dbus.manifest
-Source1010: libcynara-creds-socket.manifest
-Source1011: libcynara-session.manifest
-Source1012: libcynara-storage.manifest
-Source1013: cynara-db-migration.manifest
+Source1006: libcynara-agent.manifest
+Source1007: libcynara-client-commons.manifest
+Source1008: libcynara-commons.manifest
+Source1009: libcynara-creds-commons.manifest
+Source1010: libcynara-creds-dbus.manifest
+Source1011: libcynara-creds-socket.manifest
+Source1012: libcynara-session.manifest
+Source1013: libcynara-storage.manifest
+Source1014: cynara-db-migration.manifest
Requires: default-ac-domains
Requires(pre): pwdutils
Requires(pre): cynara-db-migration >= %{version}-%{release}
%description
service, client libraries (libcynara-client, libcynara-client-async, libcynara-admin),
-helper libraries (libcynara-session, libcynara-creds-common, libcynara-creds-dbus,
-libcynara-creds-socket)
-and tests (cynara-tests)
+agent library, helper libraries (libcynara-session, libcynara-creds-common, libcynara-creds-dbus,
+libcynara-creds-socket) and tests (cynara-tests)
#######################################################
%package -n libcynara-client
admin client library (devel) for setting, listing and removing policies
#######################################################
+%package -n libcynara-agent
+Summary: Cynara - agent client library
+Requires: cynara = %{version}-%{release}
+
+%description -n libcynara-agent
+agent client library for communication with cynara service and plugins
+
+%package -n libcynara-agent-devel
+Summary: Cynara - agent client library (devel)
+Requires: libcynara-agent = %{version}-%{release}
+Requires: libcynara-client-commons-devel = %{version}-%{release}
+
+%description -n libcynara-agent-devel
+agent client library (devel) for communication with cynara service and plugins
+
+#######################################################
%package -n libcynara-storage
Summary: Cynara - storage
cp -a %{SOURCE1011} .
cp -a %{SOURCE1012} .
cp -a %{SOURCE1013} .
+cp -a %{SOURCE1014} .
cp -a test/db/db* .
%build
%postun -n libcynara-admin -p /sbin/ldconfig
+%post -n libcynara-agent -p /sbin/ldconfig
+
+%postun -n libcynara-agent -p /sbin/ldconfig
+
%post -n libcynara-storage -p /sbin/ldconfig
%postun -n libcynara-storage -p /sbin/ldconfig
%postun -n libcynara-admin-devel -p /sbin/ldconfig
+%post -n libcynara-agent-devel -p /sbin/ldconfig
+
+%postun -n libcynara-agent-devel -p /sbin/ldconfig
+
%post -n libcynara-commons-devel -p /sbin/ldconfig
%postun -n libcynara-commons-devel -p /sbin/ldconfig
%{_libdir}/libcynara-admin.so
%{_libdir}/pkgconfig/cynara-admin.pc
+%files -n libcynara-agent
+%manifest libcynara-agent.manifest
+%license LICENSE
+%{_libdir}/libcynara-agent.so.*
+
+%files -n libcynara-agent-devel
+%{_includedir}/cynara/cynara-agent.h
+%{_libdir}/libcynara-agent.so
+%{_libdir}/pkgconfig/cynara-agent.pc
+
%files -n libcynara-storage
%manifest libcynara-storage.manifest
%license LICENSE
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_" />
+ </request>
+</manifest>
ADD_SUBDIRECTORY(cynara-client)
ADD_SUBDIRECTORY(cynara-client-async)
ADD_SUBDIRECTORY(cynara-admin)
+ADD_SUBDIRECTORY(cynara-agent)
ADD_SUBDIRECTORY(cynara-creds-commons)
ADD_SUBDIRECTORY(cynara-creds-dbus)
ADD_SUBDIRECTORY(cynara-creds-socket)
--- /dev/null
+# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# @file pkgconfig/cynara-agent/CMakeLists.txt
+# @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+#
+
+CONFIGURE_FILE(cynara-agent.pc.in cynara-agent.pc @ONLY)
+
+INSTALL(FILES
+ ${CMAKE_BINARY_DIR}/pkgconfig/cynara-agent/cynara-agent.pc
+ DESTINATION
+ ${LIB_INSTALL_DIR}/pkgconfig
+ )
--- /dev/null
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=@LIB_INSTALL_DIR@
+includedir=${prefix}/include
+
+Name: cynara-agent
+Description: cynara-agent package
+Version: @CYNARA_VERSION@
+Requires:
+Libs: -L${libdir} -lcynara-agent
+Cflags: -I${includedir}/cynara
ADD_SUBDIRECTORY(client-async)
ADD_SUBDIRECTORY(client-common)
ADD_SUBDIRECTORY(admin)
+ADD_SUBDIRECTORY(agent)
ADD_SUBDIRECTORY(storage)
ADD_SUBDIRECTORY(service)
ADD_SUBDIRECTORY(helpers/creds-commons)
--- /dev/null
+# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# @file src/agent/CMakeLists.txt
+# @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+#
+
+SET(LIB_CYNARA_AGENT_VERSION_MAJOR 0)
+SET(LIB_CYNARA_AGENT_VERSION ${LIB_CYNARA_AGENT_VERSION_MAJOR}.3.0)
+
+SET(CYNARA_LIB_CYNARA_AGENT_PATH ${CYNARA_PATH}/agent)
+
+SET(LIB_CYNARA_AGENT_SOURCES
+ ${CYNARA_LIB_CYNARA_AGENT_PATH}/api/agent-api.cpp
+ ${CYNARA_LIB_CYNARA_AGENT_PATH}/logic/Logic.cpp
+ )
+
+INCLUDE_DIRECTORIES(
+ ${CYNARA_PATH}/include
+ ${CYNARA_LIB_CYNARA_AGENT_PATH}
+ )
+
+ADD_LIBRARY(${TARGET_LIB_CYNARA_AGENT} SHARED ${LIB_CYNARA_AGENT_SOURCES})
+
+SET_TARGET_PROPERTIES(
+ ${TARGET_LIB_CYNARA_AGENT}
+ PROPERTIES
+ SOVERSION ${LIB_CYNARA_AGENT_VERSION_MAJOR}
+ VERSION ${LIB_CYNARA_AGENT_VERSION}
+ )
+
+TARGET_LINK_LIBRARIES(${TARGET_LIB_CYNARA_AGENT}
+ ${TARGET_CYNARA_COMMON}
+ )
+
+INSTALL(TARGETS ${TARGET_LIB_CYNARA_AGENT} DESTINATION ${LIB_INSTALL_DIR})
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+/**
+ * @file src/agent/api/ApiInterface.h
+ * @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @version 1.0
+ * @brief This file contains libcynara-agent API interface definition.
+ */
+
+#ifndef SRC_AGENT_API_APIINTERFACE_H_
+#define SRC_AGENT_API_APIINTERFACE_H_
+
+#include <containers/RawBuffer.h>
+#include <response/pointers.h>
+#include <types/Agent.h>
+#include <types/ProtocolFields.h>
+
+namespace Cynara {
+
+class ApiInterface {
+public:
+ ApiInterface() = default;
+ virtual ~ApiInterface() {};
+
+ virtual int getRequest(AgentActionResponsePtr &actionResponsePtr) = 0;
+
+ virtual int putResponse(AgentRequestType requestType,
+ ProtocolFrameSequenceNumber sequenceNumber,
+ const RawBuffer &pluginData) = 0;
+};
+
+} // namespace Cynara
+
+#endif /* SRC_AGENT_API_APIINTERFACE_H_ */
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+/**
+ * @file src/agent/api/agent-api.cpp
+ * @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @version 1.0
+ * @brief Implementation of external libcynara-agent API
+ */
+
+#include <cstdlib>
+#include <cstring>
+
+#include <common.h>
+#include <containers/RawBuffer.h>
+#include <exceptions/TryCatch.h>
+#include <log/log.h>
+#include <response/AgentActionResponse.h>
+#include <response/pointers.h>
+#include <types/Agent.h>
+#include <types/ProtocolFields.h>
+
+#include <api/ApiInterface.h>
+#include <cynara-agent.h>
+#include <logic/Logic.h>
+
+struct cynara_agent {
+ Cynara::ApiInterface *impl;
+
+ cynara_agent(Cynara::ApiInterface *_impl) : impl(_impl) {}
+
+ ~cynara_agent() {
+ delete impl;
+ }
+};
+
+CYNARA_API
+int cynara_agent_initialize(cynara_agent **pp_cynara_agent, const char *p_agent_type) {
+ if (!pp_cynara_agent)
+ return CYNARA_API_INVALID_PARAM;
+
+ return Cynara::tryCatch([&]() {
+ *pp_cynara_agent = new cynara_agent(new Cynara::Logic(p_agent_type));
+
+ init_log();
+
+ LOGD("Cynara agent initialized");
+
+ return CYNARA_API_SUCCESS;
+ });
+}
+
+CYNARA_API
+int cynara_agent_finish(cynara_agent *pp_cynara_agent) {
+ delete pp_cynara_agent;
+
+ return CYNARA_API_SUCCESS;
+}
+
+CYNARA_API
+int cynara_agent_get_request(cynara_agent *p_cynara_agent, cynara_agent_msg_type *req_type,
+ cynara_agent_req_id *req_id, void **data, size_t *data_size) {
+
+ if (!p_cynara_agent || !p_cynara_agent->impl)
+ return CYNARA_API_INVALID_PARAM;
+ if (!req_type || !req_id)
+ return CYNARA_API_INVALID_PARAM;
+ if (!data || !data_size)
+ return CYNARA_API_INVALID_PARAM;
+
+ return Cynara::tryCatch([&]() {
+ Cynara::AgentActionResponsePtr actionResponsePtr;
+ int ret = p_cynara_agent->impl->getRequest(actionResponsePtr);
+ if (ret != CYNARA_API_SUCCESS)
+ return ret;
+
+ size_t dataSize = actionResponsePtr->data().size();
+ if (dataSize > 0) {
+ void *tmpData = malloc(dataSize);
+ if (tmpData == nullptr)
+ return CYNARA_API_OUT_OF_MEMORY;
+
+ *data = tmpData;
+ memcpy(*data, actionResponsePtr->data().data(), dataSize);
+ }
+
+ *data_size = dataSize;
+ *req_type = static_cast<cynara_agent_msg_type>(actionResponsePtr->type());
+ *req_id = actionResponsePtr->sequenceNumber();
+
+ return CYNARA_API_SUCCESS;
+ });
+}
+
+CYNARA_API
+int cynara_agent_put_response(cynara_agent *p_cynara_agent, const cynara_agent_msg_type resp_type,
+ const cynara_agent_req_id req_id, const void *data,
+ const size_t data_size) {
+
+ if (!p_cynara_agent || !p_cynara_agent->impl)
+ return CYNARA_API_INVALID_PARAM;
+ if ((resp_type != CYNARA_MSG_TYPE_ACTION) && (resp_type != CYNARA_MSG_TYPE_CANCEL))
+ return CYNARA_API_INVALID_PARAM;
+ if ((!data && data_size) || (data && !data_size))
+ return CYNARA_API_INVALID_PARAM;
+
+ return Cynara::tryCatch([&]() {
+ const char *first = static_cast<const char *>(data);
+ const char *last = first + data_size;
+ Cynara::RawBuffer pluginData(first, last);
+ return p_cynara_agent->impl->putResponse(resp_type, req_id, pluginData);
+ });
+}
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+/**
+ * @file src/agent/logic/Logic.cpp
+ * @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @version 1.0
+ * @brief This file contains implementation of Logic class - main libcynara-agent class
+ */
+
+#include <common.h>
+
+#include <cynara-error.h>
+
+#include "Logic.h"
+
+namespace Cynara {
+
+Logic::Logic(const AgentType &agentType) : m_agentType(agentType) {
+}
+
+int Logic::getRequest(AgentActionResponsePtr &resultPtr UNUSED) {
+ // TODO: implement
+ return CYNARA_API_SUCCESS;
+}
+
+int Logic::putResponse(const AgentResponseType responseType UNUSED,
+ const ProtocolFrameSequenceNumber sequenceNumber UNUSED,
+ const RawBuffer &pluginData UNUSED) {
+
+ // TODO: implement
+ return CYNARA_API_SUCCESS;
+}
+
+} // namespace Cynara
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+/**
+ * @file src/agent/logic/Logic.h
+ * @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @version 1.0
+ * @brief This file contains definition of Logic class - main libcynara-agent class
+ */
+
+#ifndef SRC_AGENT_LOGIC_LOGIC_H_
+#define SRC_AGENT_LOGIC_LOGIC_H_
+
+#include <types/Agent.h>
+
+#include <api/ApiInterface.h>
+
+namespace Cynara {
+
+class Logic : public ApiInterface {
+public:
+ Logic(const AgentType &agentType);
+ virtual ~Logic() {};
+
+ virtual int getRequest(AgentActionResponsePtr &actionResponsePtr);
+
+ virtual int putResponse(const AgentResponseType responseType,
+ const ProtocolFrameSequenceNumber sequenceNumber,
+ const RawBuffer &pluginData);
+
+private:
+ AgentType m_agentType;
+};
+
+} // namespace Cynara
+
+#endif /* SRC_AGENT_LOGIC_LOGIC_H_ */
${COMMON_PATH}/request/RequestTaker.cpp
${COMMON_PATH}/request/SetPoliciesRequest.cpp
${COMMON_PATH}/request/SignalRequest.cpp
+ ${COMMON_PATH}/response/AgentActionResponse.cpp
${COMMON_PATH}/response/CancelResponse.cpp
${COMMON_PATH}/response/CheckResponse.cpp
${COMMON_PATH}/response/CodeResponse.cpp
class AdminCheckRequest;
typedef std::shared_ptr<AdminCheckRequest> AdminCheckRequestPtr;
+class AgentActionRequest;
+typedef std::shared_ptr<AgentActionRequest> AgentActionRequestPtr;
+
class CancelRequest;
typedef std::shared_ptr<CancelRequest> CancelRequestPtr;
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @file src/common/response/AgentActionResponse.cpp
+ * @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @version 1.0
+ * @brief This file implements common class for sending a request to agent
+ */
+
+#include <memory>
+
+#include <response/ResponseTaker.h>
+
+#include "AgentActionResponse.h"
+
+namespace Cynara {
+
+void AgentActionResponse::execute(ResponsePtr self, ResponseTakerPtr taker,
+ RequestContextPtr context) const {
+ taker->execute(context, std::dynamic_pointer_cast<AgentActionResponse>(self));
+}
+
+} // namespace Cynara
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @file src/common/response/AgentActionResponse.h
+ * @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @version 1.0
+ * @brief This file defines class for responding to agent action request
+ */
+
+#ifndef SRC_COMMON_RESPONSE_AGENTACTIONRESPONSE_H_
+#define SRC_COMMON_RESPONSE_AGENTACTIONRESPONSE_H_
+
+#include <containers/RawBuffer.h>
+#include <request/pointers.h>
+#include <response/pointers.h>
+#include <response/Response.h>
+#include <types/Agent.h>
+
+namespace Cynara {
+
+class AgentActionResponse : public Response {
+public:
+ AgentActionResponse(const AgentResponseType type, const RawBuffer &data,
+ ProtocolFrameSequenceNumber sequenceNumber) : Response(sequenceNumber),
+ m_type(type), m_data(data) {}
+
+ ~AgentActionResponse() {}
+
+ virtual void execute(ResponsePtr self, ResponseTakerPtr taker, RequestContextPtr context) const;
+
+ const RawBuffer &data(void) const {
+ return m_data;
+ }
+
+ AgentResponseType type(void) const {
+ return m_type;
+ }
+
+private:
+ const AgentResponseType m_type;
+ const RawBuffer m_data;
+};
+
+} // namespace Cynara
+
+#endif /* SRC_COMMON_RESPONSE_AGENTACTIONRESPONSE_H_ */
namespace Cynara {
+void ResponseTaker::execute(RequestContextPtr context UNUSED, AgentActionResponsePtr response UNUSED) {
+ throw NotImplementedException();
+}
+
void ResponseTaker::execute(RequestContextPtr context UNUSED, CancelResponsePtr response UNUSED) {
throw NotImplementedException();
}
ResponseTaker() = default;
virtual ~ResponseTaker() {};
+ virtual void execute(RequestContextPtr context, AgentActionResponsePtr response);
virtual void execute(RequestContextPtr context, CancelResponsePtr response);
virtual void execute(RequestContextPtr context, CheckResponsePtr response);
virtual void execute(RequestContextPtr context, CodeResponsePtr response);
namespace Cynara {
+class AgentActionResponse;
+typedef std::shared_ptr<AgentActionResponse> AgentActionResponsePtr;
+
class CancelResponse;
typedef std::shared_ptr<CancelResponse> CancelResponsePtr;
--- /dev/null
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @file src/common/types/Agent.h
+ * @author Adam Malinowski <a.malinowsk2@partner.samsung.com>
+ * @version 1.0
+ * @brief This file defines agent related types
+ */
+
+#ifndef SRC_COMMON_TYPES_AGENT_H_
+#define SRC_COMMON_TYPES_AGENT_H_
+
+#include <cstdint>
+#include <string>
+
+namespace Cynara {
+
+typedef std::uint8_t AgentRequestType;
+typedef std::uint8_t AgentResponseType;
+typedef std::string AgentType;
+
+} // namespace Cynara
+
+#endif /* SRC_COMMON_TYPES_AGENT_H_ */
INSTALL(FILES
${CYNARA_PATH}/include/cynara-admin.h
${CYNARA_PATH}/include/cynara-admin-types.h
+ ${CYNARA_PATH}/include/cynara-agent.h
${CYNARA_PATH}/include/cynara-client.h
${CYNARA_PATH}/include/cynara-client-async.h
${CYNARA_PATH}/include/cynara-client-plugin.h