serializer: add schema file 92/199792/11
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 8 Feb 2019 11:46:05 +0000 (12:46 +0100)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Thu, 7 Mar 2019 07:32:56 +0000 (07:32 +0000)
Change-Id: I35ab9247800fa2a00d22fb7f44a3390ff4273e3d

src/internal/include/fb.fbs [new file with mode: 0644]
src/internal/include/fb_generated.h [new file with mode: 0644]

diff --git a/src/internal/include/fb.fbs b/src/internal/include/fb.fbs
new file mode 100644 (file)
index 0000000..c0e88c8
--- /dev/null
@@ -0,0 +1,110 @@
+namespace FB;
+
+enum Decision : byte {ANY = 0, ALLOW, DENY, CHECK}
+enum BusAccessType : byte {USER, GROUP, ALL_USERS, ALL_GROUPS}
+enum MessageType : byte { ANY = 0, METHOD_CALL, METHOD_RETURN, ERROR, SIGNAL }
+
+table File {
+    m_own_set:OwnSet;
+    m_send_set:SendSet;
+    m_receive_set:ReceiveSet;
+    m_access_set:AccessSet;
+}
+
+table OwnSet {
+    context_default: PolicyOwn;
+    context_mandatory: PolicyOwn;
+    user:[PolicyOwnPair];
+    group:[PolicyOwnPair];
+}
+
+table PolicyOwn {
+    tree:PolicyOwnNode;
+}
+
+table PolicyOwnPair {
+    id: long (key);
+    policy: PolicyOwn;
+}
+
+table PolicySendPair {
+    id: long (key);
+    policy: PolicySend;
+}
+
+table PolicyReceivePair {
+    id: long (key);
+    policy: PolicyReceive;
+}
+
+table PolicyOwnNode {
+    token:string (key);
+    prefix_decision_item:DecisionItem;
+    decision_item:DecisionItem;
+    children:[PolicyOwnNode];
+}
+
+table SendSet {
+    context_default: PolicySend;
+    context_mandatory: PolicySend;
+    user:[PolicySendPair];
+    group:[PolicySendPair];
+}
+
+table PolicySend {
+    items:[ItemSend];
+}
+
+table ItemSend {
+    decision:DecisionItem;
+    name:string;
+    interface:string;
+    member:string;
+    path:string;
+    type:MessageType;
+    is_name_prefix:bool;
+}
+
+table ItemReceive {
+    decision:DecisionItem;
+    name:string;
+    interface:string;
+    member:string;
+    path:string;
+    type:MessageType;
+    is_name_prefix:bool;
+}
+
+table ReceiveSet {
+    context_default: PolicyReceive;
+    context_mandatory: PolicyReceive;
+    user:[PolicyReceivePair];
+    group:[PolicyReceivePair];
+}
+
+table PolicyReceive {
+    items:[ItemReceive];
+}
+
+table AccessSet {
+    context_default: PolicyAccess;
+    context_mandatory: PolicyAccess;
+}
+
+table PolicyAccess {
+    items:[ItemAccess];
+}
+
+table ItemAccess {
+    uid:uint;
+    gid:uint;
+    decision:DecisionItem;
+    type:BusAccessType;
+}
+
+table DecisionItem {
+    decision:Decision;
+    privilege:string;
+}
+
+root_type File;
diff --git a/src/internal/include/fb_generated.h b/src/internal/include/fb_generated.h
new file mode 100644 (file)
index 0000000..95d8eec
--- /dev/null
@@ -0,0 +1,1444 @@
+// automatically generated by the FlatBuffers compiler, do not modify
+
+
+#ifndef FLATBUFFERS_GENERATED_FB_FB_H_
+#define FLATBUFFERS_GENERATED_FB_FB_H_
+
+#include "flatbuffers/flatbuffers.h"
+
+namespace FB {
+
+struct File;
+
+struct OwnSet;
+
+struct PolicyOwn;
+
+struct PolicyOwnPair;
+
+struct PolicySendPair;
+
+struct PolicyReceivePair;
+
+struct PolicyOwnNode;
+
+struct SendSet;
+
+struct PolicySend;
+
+struct ItemSend;
+
+struct ItemReceive;
+
+struct ReceiveSet;
+
+struct PolicyReceive;
+
+struct AccessSet;
+
+struct PolicyAccess;
+
+struct ItemAccess;
+
+struct DecisionItem;
+
+enum Decision {
+  Decision_ANY = 0,
+  Decision_ALLOW = 1,
+  Decision_DENY = 2,
+  Decision_CHECK = 3,
+  Decision_MIN = Decision_ANY,
+  Decision_MAX = Decision_CHECK
+};
+
+inline const Decision (&EnumValuesDecision())[4] {
+  static const Decision values[] = {
+    Decision_ANY,
+    Decision_ALLOW,
+    Decision_DENY,
+    Decision_CHECK
+  };
+  return values;
+}
+
+inline const char * const *EnumNamesDecision() {
+  static const char * const names[] = {
+    "ANY",
+    "ALLOW",
+    "DENY",
+    "CHECK",
+    nullptr
+  };
+  return names;
+}
+
+inline const char *EnumNameDecision(Decision e) {
+  if (e < Decision_ANY || e > Decision_CHECK) return "";
+  const size_t index = static_cast<int>(e);
+  return EnumNamesDecision()[index];
+}
+
+enum BusAccessType {
+  BusAccessType_USER = 0,
+  BusAccessType_GROUP = 1,
+  BusAccessType_ALL_USERS = 2,
+  BusAccessType_ALL_GROUPS = 3,
+  BusAccessType_MIN = BusAccessType_USER,
+  BusAccessType_MAX = BusAccessType_ALL_GROUPS
+};
+
+inline const BusAccessType (&EnumValuesBusAccessType())[4] {
+  static const BusAccessType values[] = {
+    BusAccessType_USER,
+    BusAccessType_GROUP,
+    BusAccessType_ALL_USERS,
+    BusAccessType_ALL_GROUPS
+  };
+  return values;
+}
+
+inline const char * const *EnumNamesBusAccessType() {
+  static const char * const names[] = {
+    "USER",
+    "GROUP",
+    "ALL_USERS",
+    "ALL_GROUPS",
+    nullptr
+  };
+  return names;
+}
+
+inline const char *EnumNameBusAccessType(BusAccessType e) {
+  if (e < BusAccessType_USER || e > BusAccessType_ALL_GROUPS) return "";
+  const size_t index = static_cast<int>(e);
+  return EnumNamesBusAccessType()[index];
+}
+
+enum MessageType {
+  MessageType_ANY = 0,
+  MessageType_METHOD_CALL = 1,
+  MessageType_METHOD_RETURN = 2,
+  MessageType_ERROR = 3,
+  MessageType_SIGNAL = 4,
+  MessageType_MIN = MessageType_ANY,
+  MessageType_MAX = MessageType_SIGNAL
+};
+
+inline const MessageType (&EnumValuesMessageType())[5] {
+  static const MessageType values[] = {
+    MessageType_ANY,
+    MessageType_METHOD_CALL,
+    MessageType_METHOD_RETURN,
+    MessageType_ERROR,
+    MessageType_SIGNAL
+  };
+  return values;
+}
+
+inline const char * const *EnumNamesMessageType() {
+  static const char * const names[] = {
+    "ANY",
+    "METHOD_CALL",
+    "METHOD_RETURN",
+    "ERROR",
+    "SIGNAL",
+    nullptr
+  };
+  return names;
+}
+
+inline const char *EnumNameMessageType(MessageType e) {
+  if (e < MessageType_ANY || e > MessageType_SIGNAL) return "";
+  const size_t index = static_cast<int>(e);
+  return EnumNamesMessageType()[index];
+}
+
+struct File FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_M_OWN_SET = 4,
+    VT_M_SEND_SET = 6,
+    VT_M_RECEIVE_SET = 8,
+    VT_M_ACCESS_SET = 10
+  };
+  const OwnSet *m_own_set() const {
+    return GetPointer<const OwnSet *>(VT_M_OWN_SET);
+  }
+  const SendSet *m_send_set() const {
+    return GetPointer<const SendSet *>(VT_M_SEND_SET);
+  }
+  const ReceiveSet *m_receive_set() const {
+    return GetPointer<const ReceiveSet *>(VT_M_RECEIVE_SET);
+  }
+  const AccessSet *m_access_set() const {
+    return GetPointer<const AccessSet *>(VT_M_ACCESS_SET);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_M_OWN_SET) &&
+           verifier.VerifyTable(m_own_set()) &&
+           VerifyOffset(verifier, VT_M_SEND_SET) &&
+           verifier.VerifyTable(m_send_set()) &&
+           VerifyOffset(verifier, VT_M_RECEIVE_SET) &&
+           verifier.VerifyTable(m_receive_set()) &&
+           VerifyOffset(verifier, VT_M_ACCESS_SET) &&
+           verifier.VerifyTable(m_access_set()) &&
+           verifier.EndTable();
+  }
+};
+
+struct FileBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_m_own_set(flatbuffers::Offset<OwnSet> m_own_set) {
+    fbb_.AddOffset(File::VT_M_OWN_SET, m_own_set);
+  }
+  void add_m_send_set(flatbuffers::Offset<SendSet> m_send_set) {
+    fbb_.AddOffset(File::VT_M_SEND_SET, m_send_set);
+  }
+  void add_m_receive_set(flatbuffers::Offset<ReceiveSet> m_receive_set) {
+    fbb_.AddOffset(File::VT_M_RECEIVE_SET, m_receive_set);
+  }
+  void add_m_access_set(flatbuffers::Offset<AccessSet> m_access_set) {
+    fbb_.AddOffset(File::VT_M_ACCESS_SET, m_access_set);
+  }
+  explicit FileBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  FileBuilder &operator=(const FileBuilder &);
+  flatbuffers::Offset<File> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<File>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<File> CreateFile(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<OwnSet> m_own_set = 0,
+    flatbuffers::Offset<SendSet> m_send_set = 0,
+    flatbuffers::Offset<ReceiveSet> m_receive_set = 0,
+    flatbuffers::Offset<AccessSet> m_access_set = 0) {
+  FileBuilder builder_(_fbb);
+  builder_.add_m_access_set(m_access_set);
+  builder_.add_m_receive_set(m_receive_set);
+  builder_.add_m_send_set(m_send_set);
+  builder_.add_m_own_set(m_own_set);
+  return builder_.Finish();
+}
+
+struct OwnSet FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_CONTEXT_DEFAULT = 4,
+    VT_CONTEXT_MANDATORY = 6,
+    VT_USER = 8,
+    VT_GROUP = 10
+  };
+  const PolicyOwn *context_default() const {
+    return GetPointer<const PolicyOwn *>(VT_CONTEXT_DEFAULT);
+  }
+  const PolicyOwn *context_mandatory() const {
+    return GetPointer<const PolicyOwn *>(VT_CONTEXT_MANDATORY);
+  }
+  const flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>> *user() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>> *>(VT_USER);
+  }
+  const flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>> *group() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>> *>(VT_GROUP);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_CONTEXT_DEFAULT) &&
+           verifier.VerifyTable(context_default()) &&
+           VerifyOffset(verifier, VT_CONTEXT_MANDATORY) &&
+           verifier.VerifyTable(context_mandatory()) &&
+           VerifyOffset(verifier, VT_USER) &&
+           verifier.VerifyVector(user()) &&
+           verifier.VerifyVectorOfTables(user()) &&
+           VerifyOffset(verifier, VT_GROUP) &&
+           verifier.VerifyVector(group()) &&
+           verifier.VerifyVectorOfTables(group()) &&
+           verifier.EndTable();
+  }
+};
+
+struct OwnSetBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_context_default(flatbuffers::Offset<PolicyOwn> context_default) {
+    fbb_.AddOffset(OwnSet::VT_CONTEXT_DEFAULT, context_default);
+  }
+  void add_context_mandatory(flatbuffers::Offset<PolicyOwn> context_mandatory) {
+    fbb_.AddOffset(OwnSet::VT_CONTEXT_MANDATORY, context_mandatory);
+  }
+  void add_user(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>>> user) {
+    fbb_.AddOffset(OwnSet::VT_USER, user);
+  }
+  void add_group(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>>> group) {
+    fbb_.AddOffset(OwnSet::VT_GROUP, group);
+  }
+  explicit OwnSetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  OwnSetBuilder &operator=(const OwnSetBuilder &);
+  flatbuffers::Offset<OwnSet> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<OwnSet>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<OwnSet> CreateOwnSet(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicyOwn> context_default = 0,
+    flatbuffers::Offset<PolicyOwn> context_mandatory = 0,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>>> user = 0,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyOwnPair>>> group = 0) {
+  OwnSetBuilder builder_(_fbb);
+  builder_.add_group(group);
+  builder_.add_user(user);
+  builder_.add_context_mandatory(context_mandatory);
+  builder_.add_context_default(context_default);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<OwnSet> CreateOwnSetDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicyOwn> context_default = 0,
+    flatbuffers::Offset<PolicyOwn> context_mandatory = 0,
+    const std::vector<flatbuffers::Offset<PolicyOwnPair>> *user = nullptr,
+    const std::vector<flatbuffers::Offset<PolicyOwnPair>> *group = nullptr) {
+  auto user__ = user ? _fbb.CreateVector<flatbuffers::Offset<PolicyOwnPair>>(*user) : 0;
+  auto group__ = group ? _fbb.CreateVector<flatbuffers::Offset<PolicyOwnPair>>(*group) : 0;
+  return FB::CreateOwnSet(
+      _fbb,
+      context_default,
+      context_mandatory,
+      user__,
+      group__);
+}
+
+struct PolicyOwn FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_TREE = 4
+  };
+  const PolicyOwnNode *tree() const {
+    return GetPointer<const PolicyOwnNode *>(VT_TREE);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_TREE) &&
+           verifier.VerifyTable(tree()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicyOwnBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_tree(flatbuffers::Offset<PolicyOwnNode> tree) {
+    fbb_.AddOffset(PolicyOwn::VT_TREE, tree);
+  }
+  explicit PolicyOwnBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicyOwnBuilder &operator=(const PolicyOwnBuilder &);
+  flatbuffers::Offset<PolicyOwn> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicyOwn>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicyOwn> CreatePolicyOwn(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicyOwnNode> tree = 0) {
+  PolicyOwnBuilder builder_(_fbb);
+  builder_.add_tree(tree);
+  return builder_.Finish();
+}
+
+struct PolicyOwnPair FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_ID = 4,
+    VT_POLICY = 6
+  };
+  int64_t id() const {
+    return GetField<int64_t>(VT_ID, 0);
+  }
+  bool KeyCompareLessThan(const PolicyOwnPair *o) const {
+    return id() < o->id();
+  }
+  int KeyCompareWithValue(int64_t val) const {
+    return static_cast<int>(id() > val) - static_cast<int>(id() < val);
+  }
+  const PolicyOwn *policy() const {
+    return GetPointer<const PolicyOwn *>(VT_POLICY);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyField<int64_t>(verifier, VT_ID) &&
+           VerifyOffset(verifier, VT_POLICY) &&
+           verifier.VerifyTable(policy()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicyOwnPairBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_id(int64_t id) {
+    fbb_.AddElement<int64_t>(PolicyOwnPair::VT_ID, id, 0);
+  }
+  void add_policy(flatbuffers::Offset<PolicyOwn> policy) {
+    fbb_.AddOffset(PolicyOwnPair::VT_POLICY, policy);
+  }
+  explicit PolicyOwnPairBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicyOwnPairBuilder &operator=(const PolicyOwnPairBuilder &);
+  flatbuffers::Offset<PolicyOwnPair> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicyOwnPair>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicyOwnPair> CreatePolicyOwnPair(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    int64_t id = 0,
+    flatbuffers::Offset<PolicyOwn> policy = 0) {
+  PolicyOwnPairBuilder builder_(_fbb);
+  builder_.add_id(id);
+  builder_.add_policy(policy);
+  return builder_.Finish();
+}
+
+struct PolicySendPair FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_ID = 4,
+    VT_POLICY = 6
+  };
+  int64_t id() const {
+    return GetField<int64_t>(VT_ID, 0);
+  }
+  bool KeyCompareLessThan(const PolicySendPair *o) const {
+    return id() < o->id();
+  }
+  int KeyCompareWithValue(int64_t val) const {
+    return static_cast<int>(id() > val) - static_cast<int>(id() < val);
+  }
+  const PolicySend *policy() const {
+    return GetPointer<const PolicySend *>(VT_POLICY);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyField<int64_t>(verifier, VT_ID) &&
+           VerifyOffset(verifier, VT_POLICY) &&
+           verifier.VerifyTable(policy()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicySendPairBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_id(int64_t id) {
+    fbb_.AddElement<int64_t>(PolicySendPair::VT_ID, id, 0);
+  }
+  void add_policy(flatbuffers::Offset<PolicySend> policy) {
+    fbb_.AddOffset(PolicySendPair::VT_POLICY, policy);
+  }
+  explicit PolicySendPairBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicySendPairBuilder &operator=(const PolicySendPairBuilder &);
+  flatbuffers::Offset<PolicySendPair> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicySendPair>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicySendPair> CreatePolicySendPair(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    int64_t id = 0,
+    flatbuffers::Offset<PolicySend> policy = 0) {
+  PolicySendPairBuilder builder_(_fbb);
+  builder_.add_id(id);
+  builder_.add_policy(policy);
+  return builder_.Finish();
+}
+
+struct PolicyReceivePair FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_ID = 4,
+    VT_POLICY = 6
+  };
+  int64_t id() const {
+    return GetField<int64_t>(VT_ID, 0);
+  }
+  bool KeyCompareLessThan(const PolicyReceivePair *o) const {
+    return id() < o->id();
+  }
+  int KeyCompareWithValue(int64_t val) const {
+    return static_cast<int>(id() > val) - static_cast<int>(id() < val);
+  }
+  const PolicyReceive *policy() const {
+    return GetPointer<const PolicyReceive *>(VT_POLICY);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyField<int64_t>(verifier, VT_ID) &&
+           VerifyOffset(verifier, VT_POLICY) &&
+           verifier.VerifyTable(policy()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicyReceivePairBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_id(int64_t id) {
+    fbb_.AddElement<int64_t>(PolicyReceivePair::VT_ID, id, 0);
+  }
+  void add_policy(flatbuffers::Offset<PolicyReceive> policy) {
+    fbb_.AddOffset(PolicyReceivePair::VT_POLICY, policy);
+  }
+  explicit PolicyReceivePairBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicyReceivePairBuilder &operator=(const PolicyReceivePairBuilder &);
+  flatbuffers::Offset<PolicyReceivePair> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicyReceivePair>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicyReceivePair> CreatePolicyReceivePair(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    int64_t id = 0,
+    flatbuffers::Offset<PolicyReceive> policy = 0) {
+  PolicyReceivePairBuilder builder_(_fbb);
+  builder_.add_id(id);
+  builder_.add_policy(policy);
+  return builder_.Finish();
+}
+
+struct PolicyOwnNode FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_TOKEN = 4,
+    VT_PREFIX_DECISION_ITEM = 6,
+    VT_DECISION_ITEM = 8,
+    VT_CHILDREN = 10
+  };
+  const flatbuffers::String *token() const {
+    return GetPointer<const flatbuffers::String *>(VT_TOKEN);
+  }
+  bool KeyCompareLessThan(const PolicyOwnNode *o) const {
+    return *token() < *o->token();
+  }
+  int KeyCompareWithValue(const char *val) const {
+    return strcmp(token()->c_str(), val);
+  }
+  const DecisionItem *prefix_decision_item() const {
+    return GetPointer<const DecisionItem *>(VT_PREFIX_DECISION_ITEM);
+  }
+  const DecisionItem *decision_item() const {
+    return GetPointer<const DecisionItem *>(VT_DECISION_ITEM);
+  }
+  const flatbuffers::Vector<flatbuffers::Offset<PolicyOwnNode>> *children() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<PolicyOwnNode>> *>(VT_CHILDREN);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffsetRequired(verifier, VT_TOKEN) &&
+           verifier.VerifyString(token()) &&
+           VerifyOffset(verifier, VT_PREFIX_DECISION_ITEM) &&
+           verifier.VerifyTable(prefix_decision_item()) &&
+           VerifyOffset(verifier, VT_DECISION_ITEM) &&
+           verifier.VerifyTable(decision_item()) &&
+           VerifyOffset(verifier, VT_CHILDREN) &&
+           verifier.VerifyVector(children()) &&
+           verifier.VerifyVectorOfTables(children()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicyOwnNodeBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_token(flatbuffers::Offset<flatbuffers::String> token) {
+    fbb_.AddOffset(PolicyOwnNode::VT_TOKEN, token);
+  }
+  void add_prefix_decision_item(flatbuffers::Offset<DecisionItem> prefix_decision_item) {
+    fbb_.AddOffset(PolicyOwnNode::VT_PREFIX_DECISION_ITEM, prefix_decision_item);
+  }
+  void add_decision_item(flatbuffers::Offset<DecisionItem> decision_item) {
+    fbb_.AddOffset(PolicyOwnNode::VT_DECISION_ITEM, decision_item);
+  }
+  void add_children(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyOwnNode>>> children) {
+    fbb_.AddOffset(PolicyOwnNode::VT_CHILDREN, children);
+  }
+  explicit PolicyOwnNodeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicyOwnNodeBuilder &operator=(const PolicyOwnNodeBuilder &);
+  flatbuffers::Offset<PolicyOwnNode> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicyOwnNode>(end);
+    fbb_.Required(o, PolicyOwnNode::VT_TOKEN);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicyOwnNode> CreatePolicyOwnNode(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<flatbuffers::String> token = 0,
+    flatbuffers::Offset<DecisionItem> prefix_decision_item = 0,
+    flatbuffers::Offset<DecisionItem> decision_item = 0,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyOwnNode>>> children = 0) {
+  PolicyOwnNodeBuilder builder_(_fbb);
+  builder_.add_children(children);
+  builder_.add_decision_item(decision_item);
+  builder_.add_prefix_decision_item(prefix_decision_item);
+  builder_.add_token(token);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<PolicyOwnNode> CreatePolicyOwnNodeDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    const char *token = nullptr,
+    flatbuffers::Offset<DecisionItem> prefix_decision_item = 0,
+    flatbuffers::Offset<DecisionItem> decision_item = 0,
+    const std::vector<flatbuffers::Offset<PolicyOwnNode>> *children = nullptr) {
+  auto token__ = token ? _fbb.CreateString(token) : 0;
+  auto children__ = children ? _fbb.CreateVector<flatbuffers::Offset<PolicyOwnNode>>(*children) : 0;
+  return FB::CreatePolicyOwnNode(
+      _fbb,
+      token__,
+      prefix_decision_item,
+      decision_item,
+      children__);
+}
+
+struct SendSet FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_CONTEXT_DEFAULT = 4,
+    VT_CONTEXT_MANDATORY = 6,
+    VT_USER = 8,
+    VT_GROUP = 10
+  };
+  const PolicySend *context_default() const {
+    return GetPointer<const PolicySend *>(VT_CONTEXT_DEFAULT);
+  }
+  const PolicySend *context_mandatory() const {
+    return GetPointer<const PolicySend *>(VT_CONTEXT_MANDATORY);
+  }
+  const flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>> *user() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>> *>(VT_USER);
+  }
+  const flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>> *group() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>> *>(VT_GROUP);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_CONTEXT_DEFAULT) &&
+           verifier.VerifyTable(context_default()) &&
+           VerifyOffset(verifier, VT_CONTEXT_MANDATORY) &&
+           verifier.VerifyTable(context_mandatory()) &&
+           VerifyOffset(verifier, VT_USER) &&
+           verifier.VerifyVector(user()) &&
+           verifier.VerifyVectorOfTables(user()) &&
+           VerifyOffset(verifier, VT_GROUP) &&
+           verifier.VerifyVector(group()) &&
+           verifier.VerifyVectorOfTables(group()) &&
+           verifier.EndTable();
+  }
+};
+
+struct SendSetBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_context_default(flatbuffers::Offset<PolicySend> context_default) {
+    fbb_.AddOffset(SendSet::VT_CONTEXT_DEFAULT, context_default);
+  }
+  void add_context_mandatory(flatbuffers::Offset<PolicySend> context_mandatory) {
+    fbb_.AddOffset(SendSet::VT_CONTEXT_MANDATORY, context_mandatory);
+  }
+  void add_user(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>>> user) {
+    fbb_.AddOffset(SendSet::VT_USER, user);
+  }
+  void add_group(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>>> group) {
+    fbb_.AddOffset(SendSet::VT_GROUP, group);
+  }
+  explicit SendSetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  SendSetBuilder &operator=(const SendSetBuilder &);
+  flatbuffers::Offset<SendSet> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<SendSet>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<SendSet> CreateSendSet(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicySend> context_default = 0,
+    flatbuffers::Offset<PolicySend> context_mandatory = 0,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>>> user = 0,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicySendPair>>> group = 0) {
+  SendSetBuilder builder_(_fbb);
+  builder_.add_group(group);
+  builder_.add_user(user);
+  builder_.add_context_mandatory(context_mandatory);
+  builder_.add_context_default(context_default);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<SendSet> CreateSendSetDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicySend> context_default = 0,
+    flatbuffers::Offset<PolicySend> context_mandatory = 0,
+    const std::vector<flatbuffers::Offset<PolicySendPair>> *user = nullptr,
+    const std::vector<flatbuffers::Offset<PolicySendPair>> *group = nullptr) {
+  auto user__ = user ? _fbb.CreateVector<flatbuffers::Offset<PolicySendPair>>(*user) : 0;
+  auto group__ = group ? _fbb.CreateVector<flatbuffers::Offset<PolicySendPair>>(*group) : 0;
+  return FB::CreateSendSet(
+      _fbb,
+      context_default,
+      context_mandatory,
+      user__,
+      group__);
+}
+
+struct PolicySend FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_ITEMS = 4
+  };
+  const flatbuffers::Vector<flatbuffers::Offset<ItemSend>> *items() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<ItemSend>> *>(VT_ITEMS);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_ITEMS) &&
+           verifier.VerifyVector(items()) &&
+           verifier.VerifyVectorOfTables(items()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicySendBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_items(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<ItemSend>>> items) {
+    fbb_.AddOffset(PolicySend::VT_ITEMS, items);
+  }
+  explicit PolicySendBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicySendBuilder &operator=(const PolicySendBuilder &);
+  flatbuffers::Offset<PolicySend> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicySend>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicySend> CreatePolicySend(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<ItemSend>>> items = 0) {
+  PolicySendBuilder builder_(_fbb);
+  builder_.add_items(items);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<PolicySend> CreatePolicySendDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    const std::vector<flatbuffers::Offset<ItemSend>> *items = nullptr) {
+  auto items__ = items ? _fbb.CreateVector<flatbuffers::Offset<ItemSend>>(*items) : 0;
+  return FB::CreatePolicySend(
+      _fbb,
+      items__);
+}
+
+struct ItemSend FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_DECISION = 4,
+    VT_NAME = 6,
+    VT_INTERFACE = 8,
+    VT_MEMBER = 10,
+    VT_PATH = 12,
+    VT_TYPE = 14,
+    VT_IS_NAME_PREFIX = 16
+  };
+  const DecisionItem *decision() const {
+    return GetPointer<const DecisionItem *>(VT_DECISION);
+  }
+  const flatbuffers::String *name() const {
+    return GetPointer<const flatbuffers::String *>(VT_NAME);
+  }
+  const flatbuffers::String *interface() const {
+    return GetPointer<const flatbuffers::String *>(VT_INTERFACE);
+  }
+  const flatbuffers::String *member() const {
+    return GetPointer<const flatbuffers::String *>(VT_MEMBER);
+  }
+  const flatbuffers::String *path() const {
+    return GetPointer<const flatbuffers::String *>(VT_PATH);
+  }
+  MessageType type() const {
+    return static_cast<MessageType>(GetField<int8_t>(VT_TYPE, 0));
+  }
+  bool is_name_prefix() const {
+    return GetField<uint8_t>(VT_IS_NAME_PREFIX, 0) != 0;
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_DECISION) &&
+           verifier.VerifyTable(decision()) &&
+           VerifyOffset(verifier, VT_NAME) &&
+           verifier.VerifyString(name()) &&
+           VerifyOffset(verifier, VT_INTERFACE) &&
+           verifier.VerifyString(interface()) &&
+           VerifyOffset(verifier, VT_MEMBER) &&
+           verifier.VerifyString(member()) &&
+           VerifyOffset(verifier, VT_PATH) &&
+           verifier.VerifyString(path()) &&
+           VerifyField<int8_t>(verifier, VT_TYPE) &&
+           VerifyField<uint8_t>(verifier, VT_IS_NAME_PREFIX) &&
+           verifier.EndTable();
+  }
+};
+
+struct ItemSendBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_decision(flatbuffers::Offset<DecisionItem> decision) {
+    fbb_.AddOffset(ItemSend::VT_DECISION, decision);
+  }
+  void add_name(flatbuffers::Offset<flatbuffers::String> name) {
+    fbb_.AddOffset(ItemSend::VT_NAME, name);
+  }
+  void add_interface(flatbuffers::Offset<flatbuffers::String> interface) {
+    fbb_.AddOffset(ItemSend::VT_INTERFACE, interface);
+  }
+  void add_member(flatbuffers::Offset<flatbuffers::String> member) {
+    fbb_.AddOffset(ItemSend::VT_MEMBER, member);
+  }
+  void add_path(flatbuffers::Offset<flatbuffers::String> path) {
+    fbb_.AddOffset(ItemSend::VT_PATH, path);
+  }
+  void add_type(MessageType type) {
+    fbb_.AddElement<int8_t>(ItemSend::VT_TYPE, static_cast<int8_t>(type), 0);
+  }
+  void add_is_name_prefix(bool is_name_prefix) {
+    fbb_.AddElement<uint8_t>(ItemSend::VT_IS_NAME_PREFIX, static_cast<uint8_t>(is_name_prefix), 0);
+  }
+  explicit ItemSendBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  ItemSendBuilder &operator=(const ItemSendBuilder &);
+  flatbuffers::Offset<ItemSend> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<ItemSend>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<ItemSend> CreateItemSend(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<DecisionItem> decision = 0,
+    flatbuffers::Offset<flatbuffers::String> name = 0,
+    flatbuffers::Offset<flatbuffers::String> interface = 0,
+    flatbuffers::Offset<flatbuffers::String> member = 0,
+    flatbuffers::Offset<flatbuffers::String> path = 0,
+    MessageType type = MessageType_ANY,
+    bool is_name_prefix = false) {
+  ItemSendBuilder builder_(_fbb);
+  builder_.add_path(path);
+  builder_.add_member(member);
+  builder_.add_interface(interface);
+  builder_.add_name(name);
+  builder_.add_decision(decision);
+  builder_.add_is_name_prefix(is_name_prefix);
+  builder_.add_type(type);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<ItemSend> CreateItemSendDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<DecisionItem> decision = 0,
+    const char *name = nullptr,
+    const char *interface = nullptr,
+    const char *member = nullptr,
+    const char *path = nullptr,
+    MessageType type = MessageType_ANY,
+    bool is_name_prefix = false) {
+  auto name__ = name ? _fbb.CreateString(name) : 0;
+  auto interface__ = interface ? _fbb.CreateString(interface) : 0;
+  auto member__ = member ? _fbb.CreateString(member) : 0;
+  auto path__ = path ? _fbb.CreateString(path) : 0;
+  return FB::CreateItemSend(
+      _fbb,
+      decision,
+      name__,
+      interface__,
+      member__,
+      path__,
+      type,
+      is_name_prefix);
+}
+
+struct ItemReceive FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_DECISION = 4,
+    VT_NAME = 6,
+    VT_INTERFACE = 8,
+    VT_MEMBER = 10,
+    VT_PATH = 12,
+    VT_TYPE = 14,
+    VT_IS_NAME_PREFIX = 16
+  };
+  const DecisionItem *decision() const {
+    return GetPointer<const DecisionItem *>(VT_DECISION);
+  }
+  const flatbuffers::String *name() const {
+    return GetPointer<const flatbuffers::String *>(VT_NAME);
+  }
+  const flatbuffers::String *interface() const {
+    return GetPointer<const flatbuffers::String *>(VT_INTERFACE);
+  }
+  const flatbuffers::String *member() const {
+    return GetPointer<const flatbuffers::String *>(VT_MEMBER);
+  }
+  const flatbuffers::String *path() const {
+    return GetPointer<const flatbuffers::String *>(VT_PATH);
+  }
+  MessageType type() const {
+    return static_cast<MessageType>(GetField<int8_t>(VT_TYPE, 0));
+  }
+  bool is_name_prefix() const {
+    return GetField<uint8_t>(VT_IS_NAME_PREFIX, 0) != 0;
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_DECISION) &&
+           verifier.VerifyTable(decision()) &&
+           VerifyOffset(verifier, VT_NAME) &&
+           verifier.VerifyString(name()) &&
+           VerifyOffset(verifier, VT_INTERFACE) &&
+           verifier.VerifyString(interface()) &&
+           VerifyOffset(verifier, VT_MEMBER) &&
+           verifier.VerifyString(member()) &&
+           VerifyOffset(verifier, VT_PATH) &&
+           verifier.VerifyString(path()) &&
+           VerifyField<int8_t>(verifier, VT_TYPE) &&
+           VerifyField<uint8_t>(verifier, VT_IS_NAME_PREFIX) &&
+           verifier.EndTable();
+  }
+};
+
+struct ItemReceiveBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_decision(flatbuffers::Offset<DecisionItem> decision) {
+    fbb_.AddOffset(ItemReceive::VT_DECISION, decision);
+  }
+  void add_name(flatbuffers::Offset<flatbuffers::String> name) {
+    fbb_.AddOffset(ItemReceive::VT_NAME, name);
+  }
+  void add_interface(flatbuffers::Offset<flatbuffers::String> interface) {
+    fbb_.AddOffset(ItemReceive::VT_INTERFACE, interface);
+  }
+  void add_member(flatbuffers::Offset<flatbuffers::String> member) {
+    fbb_.AddOffset(ItemReceive::VT_MEMBER, member);
+  }
+  void add_path(flatbuffers::Offset<flatbuffers::String> path) {
+    fbb_.AddOffset(ItemReceive::VT_PATH, path);
+  }
+  void add_type(MessageType type) {
+    fbb_.AddElement<int8_t>(ItemReceive::VT_TYPE, static_cast<int8_t>(type), 0);
+  }
+  void add_is_name_prefix(bool is_name_prefix) {
+    fbb_.AddElement<uint8_t>(ItemReceive::VT_IS_NAME_PREFIX, static_cast<uint8_t>(is_name_prefix), 0);
+  }
+  explicit ItemReceiveBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  ItemReceiveBuilder &operator=(const ItemReceiveBuilder &);
+  flatbuffers::Offset<ItemReceive> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<ItemReceive>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<ItemReceive> CreateItemReceive(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<DecisionItem> decision = 0,
+    flatbuffers::Offset<flatbuffers::String> name = 0,
+    flatbuffers::Offset<flatbuffers::String> interface = 0,
+    flatbuffers::Offset<flatbuffers::String> member = 0,
+    flatbuffers::Offset<flatbuffers::String> path = 0,
+    MessageType type = MessageType_ANY,
+    bool is_name_prefix = false) {
+  ItemReceiveBuilder builder_(_fbb);
+  builder_.add_path(path);
+  builder_.add_member(member);
+  builder_.add_interface(interface);
+  builder_.add_name(name);
+  builder_.add_decision(decision);
+  builder_.add_is_name_prefix(is_name_prefix);
+  builder_.add_type(type);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<ItemReceive> CreateItemReceiveDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<DecisionItem> decision = 0,
+    const char *name = nullptr,
+    const char *interface = nullptr,
+    const char *member = nullptr,
+    const char *path = nullptr,
+    MessageType type = MessageType_ANY,
+    bool is_name_prefix = false) {
+  auto name__ = name ? _fbb.CreateString(name) : 0;
+  auto interface__ = interface ? _fbb.CreateString(interface) : 0;
+  auto member__ = member ? _fbb.CreateString(member) : 0;
+  auto path__ = path ? _fbb.CreateString(path) : 0;
+  return FB::CreateItemReceive(
+      _fbb,
+      decision,
+      name__,
+      interface__,
+      member__,
+      path__,
+      type,
+      is_name_prefix);
+}
+
+struct ReceiveSet FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_CONTEXT_DEFAULT = 4,
+    VT_CONTEXT_MANDATORY = 6,
+    VT_USER = 8,
+    VT_GROUP = 10
+  };
+  const PolicyReceive *context_default() const {
+    return GetPointer<const PolicyReceive *>(VT_CONTEXT_DEFAULT);
+  }
+  const PolicyReceive *context_mandatory() const {
+    return GetPointer<const PolicyReceive *>(VT_CONTEXT_MANDATORY);
+  }
+  const flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>> *user() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>> *>(VT_USER);
+  }
+  const flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>> *group() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>> *>(VT_GROUP);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_CONTEXT_DEFAULT) &&
+           verifier.VerifyTable(context_default()) &&
+           VerifyOffset(verifier, VT_CONTEXT_MANDATORY) &&
+           verifier.VerifyTable(context_mandatory()) &&
+           VerifyOffset(verifier, VT_USER) &&
+           verifier.VerifyVector(user()) &&
+           verifier.VerifyVectorOfTables(user()) &&
+           VerifyOffset(verifier, VT_GROUP) &&
+           verifier.VerifyVector(group()) &&
+           verifier.VerifyVectorOfTables(group()) &&
+           verifier.EndTable();
+  }
+};
+
+struct ReceiveSetBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_context_default(flatbuffers::Offset<PolicyReceive> context_default) {
+    fbb_.AddOffset(ReceiveSet::VT_CONTEXT_DEFAULT, context_default);
+  }
+  void add_context_mandatory(flatbuffers::Offset<PolicyReceive> context_mandatory) {
+    fbb_.AddOffset(ReceiveSet::VT_CONTEXT_MANDATORY, context_mandatory);
+  }
+  void add_user(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>>> user) {
+    fbb_.AddOffset(ReceiveSet::VT_USER, user);
+  }
+  void add_group(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>>> group) {
+    fbb_.AddOffset(ReceiveSet::VT_GROUP, group);
+  }
+  explicit ReceiveSetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  ReceiveSetBuilder &operator=(const ReceiveSetBuilder &);
+  flatbuffers::Offset<ReceiveSet> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<ReceiveSet>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<ReceiveSet> CreateReceiveSet(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicyReceive> context_default = 0,
+    flatbuffers::Offset<PolicyReceive> context_mandatory = 0,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>>> user = 0,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<PolicyReceivePair>>> group = 0) {
+  ReceiveSetBuilder builder_(_fbb);
+  builder_.add_group(group);
+  builder_.add_user(user);
+  builder_.add_context_mandatory(context_mandatory);
+  builder_.add_context_default(context_default);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<ReceiveSet> CreateReceiveSetDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicyReceive> context_default = 0,
+    flatbuffers::Offset<PolicyReceive> context_mandatory = 0,
+    const std::vector<flatbuffers::Offset<PolicyReceivePair>> *user = nullptr,
+    const std::vector<flatbuffers::Offset<PolicyReceivePair>> *group = nullptr) {
+  auto user__ = user ? _fbb.CreateVector<flatbuffers::Offset<PolicyReceivePair>>(*user) : 0;
+  auto group__ = group ? _fbb.CreateVector<flatbuffers::Offset<PolicyReceivePair>>(*group) : 0;
+  return FB::CreateReceiveSet(
+      _fbb,
+      context_default,
+      context_mandatory,
+      user__,
+      group__);
+}
+
+struct PolicyReceive FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_ITEMS = 4
+  };
+  const flatbuffers::Vector<flatbuffers::Offset<ItemReceive>> *items() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<ItemReceive>> *>(VT_ITEMS);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_ITEMS) &&
+           verifier.VerifyVector(items()) &&
+           verifier.VerifyVectorOfTables(items()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicyReceiveBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_items(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<ItemReceive>>> items) {
+    fbb_.AddOffset(PolicyReceive::VT_ITEMS, items);
+  }
+  explicit PolicyReceiveBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicyReceiveBuilder &operator=(const PolicyReceiveBuilder &);
+  flatbuffers::Offset<PolicyReceive> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicyReceive>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicyReceive> CreatePolicyReceive(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<ItemReceive>>> items = 0) {
+  PolicyReceiveBuilder builder_(_fbb);
+  builder_.add_items(items);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<PolicyReceive> CreatePolicyReceiveDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    const std::vector<flatbuffers::Offset<ItemReceive>> *items = nullptr) {
+  auto items__ = items ? _fbb.CreateVector<flatbuffers::Offset<ItemReceive>>(*items) : 0;
+  return FB::CreatePolicyReceive(
+      _fbb,
+      items__);
+}
+
+struct AccessSet FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_CONTEXT_DEFAULT = 4,
+    VT_CONTEXT_MANDATORY = 6
+  };
+  const PolicyAccess *context_default() const {
+    return GetPointer<const PolicyAccess *>(VT_CONTEXT_DEFAULT);
+  }
+  const PolicyAccess *context_mandatory() const {
+    return GetPointer<const PolicyAccess *>(VT_CONTEXT_MANDATORY);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_CONTEXT_DEFAULT) &&
+           verifier.VerifyTable(context_default()) &&
+           VerifyOffset(verifier, VT_CONTEXT_MANDATORY) &&
+           verifier.VerifyTable(context_mandatory()) &&
+           verifier.EndTable();
+  }
+};
+
+struct AccessSetBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_context_default(flatbuffers::Offset<PolicyAccess> context_default) {
+    fbb_.AddOffset(AccessSet::VT_CONTEXT_DEFAULT, context_default);
+  }
+  void add_context_mandatory(flatbuffers::Offset<PolicyAccess> context_mandatory) {
+    fbb_.AddOffset(AccessSet::VT_CONTEXT_MANDATORY, context_mandatory);
+  }
+  explicit AccessSetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  AccessSetBuilder &operator=(const AccessSetBuilder &);
+  flatbuffers::Offset<AccessSet> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<AccessSet>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<AccessSet> CreateAccessSet(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<PolicyAccess> context_default = 0,
+    flatbuffers::Offset<PolicyAccess> context_mandatory = 0) {
+  AccessSetBuilder builder_(_fbb);
+  builder_.add_context_mandatory(context_mandatory);
+  builder_.add_context_default(context_default);
+  return builder_.Finish();
+}
+
+struct PolicyAccess FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_ITEMS = 4
+  };
+  const flatbuffers::Vector<flatbuffers::Offset<ItemAccess>> *items() const {
+    return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<ItemAccess>> *>(VT_ITEMS);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyOffset(verifier, VT_ITEMS) &&
+           verifier.VerifyVector(items()) &&
+           verifier.VerifyVectorOfTables(items()) &&
+           verifier.EndTable();
+  }
+};
+
+struct PolicyAccessBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_items(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<ItemAccess>>> items) {
+    fbb_.AddOffset(PolicyAccess::VT_ITEMS, items);
+  }
+  explicit PolicyAccessBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  PolicyAccessBuilder &operator=(const PolicyAccessBuilder &);
+  flatbuffers::Offset<PolicyAccess> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<PolicyAccess>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<PolicyAccess> CreatePolicyAccess(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<ItemAccess>>> items = 0) {
+  PolicyAccessBuilder builder_(_fbb);
+  builder_.add_items(items);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<PolicyAccess> CreatePolicyAccessDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    const std::vector<flatbuffers::Offset<ItemAccess>> *items = nullptr) {
+  auto items__ = items ? _fbb.CreateVector<flatbuffers::Offset<ItemAccess>>(*items) : 0;
+  return FB::CreatePolicyAccess(
+      _fbb,
+      items__);
+}
+
+struct ItemAccess FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_UID = 4,
+    VT_GID = 6,
+    VT_DECISION = 8,
+    VT_TYPE = 10
+  };
+  uint32_t uid() const {
+    return GetField<uint32_t>(VT_UID, 0);
+  }
+  uint32_t gid() const {
+    return GetField<uint32_t>(VT_GID, 0);
+  }
+  const DecisionItem *decision() const {
+    return GetPointer<const DecisionItem *>(VT_DECISION);
+  }
+  BusAccessType type() const {
+    return static_cast<BusAccessType>(GetField<int8_t>(VT_TYPE, 0));
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyField<uint32_t>(verifier, VT_UID) &&
+           VerifyField<uint32_t>(verifier, VT_GID) &&
+           VerifyOffset(verifier, VT_DECISION) &&
+           verifier.VerifyTable(decision()) &&
+           VerifyField<int8_t>(verifier, VT_TYPE) &&
+           verifier.EndTable();
+  }
+};
+
+struct ItemAccessBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_uid(uint32_t uid) {
+    fbb_.AddElement<uint32_t>(ItemAccess::VT_UID, uid, 0);
+  }
+  void add_gid(uint32_t gid) {
+    fbb_.AddElement<uint32_t>(ItemAccess::VT_GID, gid, 0);
+  }
+  void add_decision(flatbuffers::Offset<DecisionItem> decision) {
+    fbb_.AddOffset(ItemAccess::VT_DECISION, decision);
+  }
+  void add_type(BusAccessType type) {
+    fbb_.AddElement<int8_t>(ItemAccess::VT_TYPE, static_cast<int8_t>(type), 0);
+  }
+  explicit ItemAccessBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  ItemAccessBuilder &operator=(const ItemAccessBuilder &);
+  flatbuffers::Offset<ItemAccess> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<ItemAccess>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<ItemAccess> CreateItemAccess(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    uint32_t uid = 0,
+    uint32_t gid = 0,
+    flatbuffers::Offset<DecisionItem> decision = 0,
+    BusAccessType type = BusAccessType_USER) {
+  ItemAccessBuilder builder_(_fbb);
+  builder_.add_decision(decision);
+  builder_.add_gid(gid);
+  builder_.add_uid(uid);
+  builder_.add_type(type);
+  return builder_.Finish();
+}
+
+struct DecisionItem FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
+  enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
+    VT_DECISION = 4,
+    VT_PRIVILEGE = 6
+  };
+  Decision decision() const {
+    return static_cast<Decision>(GetField<int8_t>(VT_DECISION, 0));
+  }
+  const flatbuffers::String *privilege() const {
+    return GetPointer<const flatbuffers::String *>(VT_PRIVILEGE);
+  }
+  bool Verify(flatbuffers::Verifier &verifier) const {
+    return VerifyTableStart(verifier) &&
+           VerifyField<int8_t>(verifier, VT_DECISION) &&
+           VerifyOffset(verifier, VT_PRIVILEGE) &&
+           verifier.VerifyString(privilege()) &&
+           verifier.EndTable();
+  }
+};
+
+struct DecisionItemBuilder {
+  flatbuffers::FlatBufferBuilder &fbb_;
+  flatbuffers::uoffset_t start_;
+  void add_decision(Decision decision) {
+    fbb_.AddElement<int8_t>(DecisionItem::VT_DECISION, static_cast<int8_t>(decision), 0);
+  }
+  void add_privilege(flatbuffers::Offset<flatbuffers::String> privilege) {
+    fbb_.AddOffset(DecisionItem::VT_PRIVILEGE, privilege);
+  }
+  explicit DecisionItemBuilder(flatbuffers::FlatBufferBuilder &_fbb)
+        : fbb_(_fbb) {
+    start_ = fbb_.StartTable();
+  }
+  DecisionItemBuilder &operator=(const DecisionItemBuilder &);
+  flatbuffers::Offset<DecisionItem> Finish() {
+    const auto end = fbb_.EndTable(start_);
+    auto o = flatbuffers::Offset<DecisionItem>(end);
+    return o;
+  }
+};
+
+inline flatbuffers::Offset<DecisionItem> CreateDecisionItem(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    Decision decision = Decision_ANY,
+    flatbuffers::Offset<flatbuffers::String> privilege = 0) {
+  DecisionItemBuilder builder_(_fbb);
+  builder_.add_privilege(privilege);
+  builder_.add_decision(decision);
+  return builder_.Finish();
+}
+
+inline flatbuffers::Offset<DecisionItem> CreateDecisionItemDirect(
+    flatbuffers::FlatBufferBuilder &_fbb,
+    Decision decision = Decision_ANY,
+    const char *privilege = nullptr) {
+  auto privilege__ = privilege ? _fbb.CreateString(privilege) : 0;
+  return FB::CreateDecisionItem(
+      _fbb,
+      decision,
+      privilege__);
+}
+
+inline const FB::File *GetFile(const void *buf) {
+  return flatbuffers::GetRoot<FB::File>(buf);
+}
+
+inline const FB::File *GetSizePrefixedFile(const void *buf) {
+  return flatbuffers::GetSizePrefixedRoot<FB::File>(buf);
+}
+
+inline bool VerifyFileBuffer(
+    flatbuffers::Verifier &verifier) {
+  return verifier.VerifyBuffer<FB::File>(nullptr);
+}
+
+inline bool VerifySizePrefixedFileBuffer(
+    flatbuffers::Verifier &verifier) {
+  return verifier.VerifySizePrefixedBuffer<FB::File>(nullptr);
+}
+
+inline void FinishFileBuffer(
+    flatbuffers::FlatBufferBuilder &fbb,
+    flatbuffers::Offset<FB::File> root) {
+  fbb.Finish(root);
+}
+
+inline void FinishSizePrefixedFileBuffer(
+    flatbuffers::FlatBufferBuilder &fbb,
+    flatbuffers::Offset<FB::File> root) {
+  fbb.FinishSizePrefixed(root);
+}
+
+}  // namespace FB
+
+#endif  // FLATBUFFERS_GENERATED_FB_FB_H_