From 3a321cc77e0f6d29167a925dd706fc36e5aa7cdd Mon Sep 17 00:00:00 2001
From: Dimitri Staessens <dimitri@ouroboros.rocks>
Date: Sun, 27 Aug 2023 17:59:20 +0200
Subject: lib: Move protobuf definitions to pb/ directory

This moves the protobuf definition in the library to a pb/
directory. Also renames the protobuf files and does a quick review of
the #define guards in the include library to specify _LIB_ for
internal/non-public library headers.

Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
---
 src/lib/CMakeLists.txt       | 12 +++---
 src/lib/cacep.proto          | 39 -------------------
 src/lib/enroll.proto         | 42 --------------------
 src/lib/ipcp_config.proto    | 60 -----------------------------
 src/lib/ipcpd_messages.proto | 58 ----------------------------
 src/lib/irmd_messages.proto  | 91 --------------------------------------------
 src/lib/pb/cacep.proto       | 39 +++++++++++++++++++
 src/lib/pb/enroll.proto      | 42 ++++++++++++++++++++
 src/lib/pb/ipcp.proto        | 58 ++++++++++++++++++++++++++++
 src/lib/pb/ipcp_config.proto | 60 +++++++++++++++++++++++++++++
 src/lib/pb/irm.proto         | 91 ++++++++++++++++++++++++++++++++++++++++++++
 src/lib/pb/qos.proto         | 35 +++++++++++++++++
 src/lib/qosspec.proto        | 35 -----------------
 13 files changed, 331 insertions(+), 331 deletions(-)
 delete mode 100644 src/lib/cacep.proto
 delete mode 100644 src/lib/enroll.proto
 delete mode 100644 src/lib/ipcp_config.proto
 delete mode 100644 src/lib/ipcpd_messages.proto
 delete mode 100644 src/lib/irmd_messages.proto
 create mode 100644 src/lib/pb/cacep.proto
 create mode 100644 src/lib/pb/enroll.proto
 create mode 100644 src/lib/pb/ipcp.proto
 create mode 100644 src/lib/pb/ipcp_config.proto
 create mode 100644 src/lib/pb/irm.proto
 create mode 100644 src/lib/pb/qos.proto
 delete mode 100644 src/lib/qosspec.proto

(limited to 'src/lib')

diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index ac5367ab..b75fd0e0 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -5,17 +5,17 @@ include_directories(${CMAKE_SOURCE_DIR}/include)
 include_directories(${CMAKE_BINARY_DIR}/include)
 
 protobuf_generate_c(QOSSPEC_PROTO_SRCS QOSSPEC_PROTO_HDRS
-  qosspec.proto)
+  pb/qos.proto)
 protobuf_generate_c(IPCP_CONFIG_PROTO_SRCS IPCP_CONFIG_PROTO_HDRS
-  ipcp_config.proto)
+  pb/ipcp_config.proto)
 protobuf_generate_c(ENROLL_PROTO_SRCS ENROLL_PROTO_HDRS
-  enroll.proto)
+  pb/enroll.proto)
 protobuf_generate_c(CACEP_PROTO_SRCS CACEP_PROTO_HDRS
-  cacep.proto)
+  pb/cacep.proto)
 protobuf_generate_c(IRM_PROTO_SRCS IRM_PROTO_HDRS
-  irmd_messages.proto)
+  pb/irm.proto)
 protobuf_generate_c(IPCP_PROTO_SRCS IPCP_PROTO_HDRS
-  ipcpd_messages.proto)
+  pb/ipcp.proto)
 
 if (NOT APPLE)
   find_library(LIBRT_LIBRARIES rt)
diff --git a/src/lib/cacep.proto b/src/lib/cacep.proto
deleted file mode 100644
index 5d735e33..00000000
--- a/src/lib/cacep.proto
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2023
- *
- * Message for Connection Information in CACEP
- *
- *    Dimitri Staessens <dimitri@ouroboros.rocks>
- *    Sander Vrijders   <sander@ouroboros.rocks>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-syntax = "proto2";
-
-message fixed_conc_syntax_msg {
-        repeated uint32 fids = 1;
-        repeated uint32 lens = 2;
-}
-
-message cacep_msg {
-        required string comp_name                  = 1;
-        required string protocol                   = 2;
-        required int32 pref_version                = 3;
-        repeated int32 supp_version                = 4;
-        required int32 pref_syntax                 = 5;
-        repeated int32 supp_syntax                 = 6;
-        optional fixed_conc_syntax_msg syntax_spec = 7;
-        required uint64 address                    = 8;
-}
\ No newline at end of file
diff --git a/src/lib/enroll.proto b/src/lib/enroll.proto
deleted file mode 100644
index 3b22ac17..00000000
--- a/src/lib/enroll.proto
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2023
- *
- * Enrollment protocol
- *
- *    Dimitri Staessens <dimitri@ouroboros.rocks>
- *    Sander Vrijders   <sander@ouroboros.rocks>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-syntax = "proto2";
-import "ipcp_config.proto";
-
-message enroll_req_msg {
-        /* TODO authentication */
-        required bytes id = 1;
-}
-
-message enroll_resp_msg {
-        required bytes           id       = 1;
-        required int64           t_sec    = 2;
-        required int32           t_nsec   = 3;
-        required int32           response = 4;
-        optional ipcp_config_msg conf     = 5;
-}
-
-message enroll_ack_msg {
-        required bytes id     = 1;
-        required int32 result = 2;
-}
diff --git a/src/lib/ipcp_config.proto b/src/lib/ipcp_config.proto
deleted file mode 100644
index 1ff304f1..00000000
--- a/src/lib/ipcp_config.proto
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2023
- *
- * Layer configuration message
- *
- *    Dimitri Staessens <dimitri@ouroboros.rocks>
- *    Sander Vrijders   <sander@ouroboros.rocks>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-syntax = "proto2";
-
-message layer_info_msg {
-        required string layer_name    =  1;
-        required uint32 dir_hash_algo =  2;
-}
-
-message dt_config_msg {
-        required uint32 addr_size    = 1;
-        required uint32 eid_size     = 2;
-        required uint32 max_ttl      = 3;
-        required uint32 routing_type = 4;
-}
-
-message uni_config_msg {
-        required dt_config_msg dt      = 1;
-        required uint32 addr_auth_type = 2;
-        required uint32 cong_avoid     = 3;
-}
-
-message eth_config_msg {
-        required string dev       = 1;
-        required uint32 ethertype = 2;
-}
-
-message udp_config_msg {
-        required uint32 ip_addr  = 1;
-        required uint32 port     = 2;
-        required uint32 dns_addr = 3; /* set to 0 if unused */
-}
-
-message ipcp_config_msg {
-        required layer_info_msg layer_info =  1;
-        required uint32 ipcp_type          =  2;
-        optional uni_config_msg unicast    =  3;
-        optional udp_config_msg udp        =  4;
-        optional eth_config_msg eth        =  5;
-}
diff --git a/src/lib/ipcpd_messages.proto b/src/lib/ipcpd_messages.proto
deleted file mode 100644
index c985b752..00000000
--- a/src/lib/ipcpd_messages.proto
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2023
- *
- * Messages sent to IPCPds
- *
- *    Dimitri Staessens <dimitri@ouroboros.rocks>
- *    Sander Vrijders   <sander@ouroboros.rocks>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-syntax = "proto2";
-
-import "ipcp_config.proto";
-import "qosspec.proto";
-
-enum ipcp_msg_code {
-        IPCP_BOOTSTRAP       =  1;
-        IPCP_ENROLL          =  2;
-        IPCP_REG             =  3;
-        IPCP_UNREG           =  4;
-        IPCP_QUERY           =  5;
-        IPCP_FLOW_ALLOC      =  6;
-        IPCP_FLOW_JOIN       =  7;
-        IPCP_FLOW_ALLOC_RESP =  8;
-        IPCP_FLOW_DEALLOC    =  9;
-        IPCP_CONNECT         = 10;
-        IPCP_DISCONNECT      = 11;
-        IPCP_REPLY           = 12;
-}
-
-message ipcp_msg {
-        required ipcp_msg_code code        =  1;
-        optional bytes hash                =  2;
-        optional int32 flow_id             =  3;
-        optional string dst                =  4;
-        optional qosspec_msg qosspec       =  5;
-        optional bytes pk                  =  6; /* piggyback */
-        optional ipcp_config_msg conf      =  7;
-        optional int32 pid                 =  8;
-        optional layer_info_msg layer_info =  9;
-        optional int32 response            = 10;
-        optional string comp               = 11;
-        optional uint32 timeo_sec          = 12;
-        optional sint32 mpl                = 13;
-        optional int32 result              = 14;
-}
diff --git a/src/lib/irmd_messages.proto b/src/lib/irmd_messages.proto
deleted file mode 100644
index 41ef8595..00000000
--- a/src/lib/irmd_messages.proto
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2023
- *
- * Messages sent to IRMd
- *
- *    Dimitri Staessens <dimitri@ouroboros.rocks>
- *    Sander Vrijders   <sander@ouroboros.rocks>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-syntax = "proto2";
-
-import "ipcp_config.proto";
-import "qosspec.proto";
-
-enum irm_msg_code {
-        IRM_CREATE_IPCP       =  1;
-        IPCP_CREATE_R         =  2;
-        IRM_DESTROY_IPCP      =  3;
-        IRM_LIST_IPCPS        =  4;
-        IRM_BOOTSTRAP_IPCP    =  5;
-        IRM_ENROLL_IPCP       =  6;
-        IRM_CONNECT_IPCP      =  7;
-        IRM_DISCONNECT_IPCP   =  8;
-        IRM_BIND_PROGRAM      =  9;
-        IRM_UNBIND_PROGRAM    = 10;
-        IRM_PROC_ANNOUNCE     = 11;
-        IRM_BIND_PROCESS      = 12;
-        IRM_UNBIND_PROCESS    = 13;
-        IRM_CREATE_NAME       = 14;
-        IRM_DESTROY_NAME      = 15;
-        IRM_LIST_NAMES        = 16;
-        IRM_REG_NAME          = 17;
-        IRM_UNREG_NAME        = 18;
-        IRM_FLOW_ALLOC        = 19;
-        IRM_FLOW_ACCEPT       = 20;
-        IRM_FLOW_JOIN         = 21;
-        IRM_FLOW_DEALLOC      = 22;
-        IPCP_FLOW_REQ_ARR     = 23;
-        IPCP_FLOW_ALLOC_REPLY = 24;
-        IRM_REPLY             = 25;
-}
-
-message ipcp_info_msg {
-        required uint32 pid   = 1;
-        required uint32 type  = 2;
-        required string name  = 3;
-        required string layer = 4;
-}
-
-message name_info_msg {
-        required string name   = 1;
-        required uint32 pol_lb = 2;
-}
-
-message irm_msg {
-        required irm_msg_code code    =  1;
-        optional string prog          =  2;
-        optional sint32 pid           =  3;
-        optional string name          =  4;
-        optional uint32 ipcp_type     =  5;
-        optional string layer         =  6;
-        repeated string args          =  7;
-        optional sint32 response      =  8;
-        optional string dst           =  9;
-        optional bytes  hash          = 10;
-        optional sint32 flow_id       = 11;
-        optional qosspec_msg qosspec  = 12;
-        optional ipcp_config_msg conf = 13;
-        optional uint32 opts          = 14;
-        repeated ipcp_info_msg ipcps  = 15;
-        repeated name_info_msg names  = 16;
-        optional uint32 timeo_sec     = 17;
-        optional uint32 timeo_nsec    = 18;
-        optional sint32 mpl           = 19;
-        optional string comp          = 20;
-        optional bytes pk             = 21; /* piggyback */
-        optional sint32 result        = 22;
-}
diff --git a/src/lib/pb/cacep.proto b/src/lib/pb/cacep.proto
new file mode 100644
index 00000000..5d735e33
--- /dev/null
+++ b/src/lib/pb/cacep.proto
@@ -0,0 +1,39 @@
+/*
+ * Ouroboros - Copyright (C) 2016 - 2023
+ *
+ * Message for Connection Information in CACEP
+ *
+ *    Dimitri Staessens <dimitri@ouroboros.rocks>
+ *    Sander Vrijders   <sander@ouroboros.rocks>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/.
+ */
+
+syntax = "proto2";
+
+message fixed_conc_syntax_msg {
+        repeated uint32 fids = 1;
+        repeated uint32 lens = 2;
+}
+
+message cacep_msg {
+        required string comp_name                  = 1;
+        required string protocol                   = 2;
+        required int32 pref_version                = 3;
+        repeated int32 supp_version                = 4;
+        required int32 pref_syntax                 = 5;
+        repeated int32 supp_syntax                 = 6;
+        optional fixed_conc_syntax_msg syntax_spec = 7;
+        required uint64 address                    = 8;
+}
\ No newline at end of file
diff --git a/src/lib/pb/enroll.proto b/src/lib/pb/enroll.proto
new file mode 100644
index 00000000..3b22ac17
--- /dev/null
+++ b/src/lib/pb/enroll.proto
@@ -0,0 +1,42 @@
+/*
+ * Ouroboros - Copyright (C) 2016 - 2023
+ *
+ * Enrollment protocol
+ *
+ *    Dimitri Staessens <dimitri@ouroboros.rocks>
+ *    Sander Vrijders   <sander@ouroboros.rocks>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/.
+ */
+
+syntax = "proto2";
+import "ipcp_config.proto";
+
+message enroll_req_msg {
+        /* TODO authentication */
+        required bytes id = 1;
+}
+
+message enroll_resp_msg {
+        required bytes           id       = 1;
+        required int64           t_sec    = 2;
+        required int32           t_nsec   = 3;
+        required int32           response = 4;
+        optional ipcp_config_msg conf     = 5;
+}
+
+message enroll_ack_msg {
+        required bytes id     = 1;
+        required int32 result = 2;
+}
diff --git a/src/lib/pb/ipcp.proto b/src/lib/pb/ipcp.proto
new file mode 100644
index 00000000..f3eca0b8
--- /dev/null
+++ b/src/lib/pb/ipcp.proto
@@ -0,0 +1,58 @@
+/*
+ * Ouroboros - Copyright (C) 2016 - 2023
+ *
+ * Messages sent to IPCPds
+ *
+ *    Dimitri Staessens <dimitri@ouroboros.rocks>
+ *    Sander Vrijders   <sander@ouroboros.rocks>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/.
+ */
+
+syntax = "proto2";
+
+import "ipcp_config.proto";
+import "qos.proto";
+
+enum ipcp_msg_code {
+        IPCP_BOOTSTRAP       =  1;
+        IPCP_ENROLL          =  2;
+        IPCP_REG             =  3;
+        IPCP_UNREG           =  4;
+        IPCP_QUERY           =  5;
+        IPCP_FLOW_ALLOC      =  6;
+        IPCP_FLOW_JOIN       =  7;
+        IPCP_FLOW_ALLOC_RESP =  8;
+        IPCP_FLOW_DEALLOC    =  9;
+        IPCP_CONNECT         = 10;
+        IPCP_DISCONNECT      = 11;
+        IPCP_REPLY           = 12;
+}
+
+message ipcp_msg {
+        required ipcp_msg_code code        =  1;
+        optional bytes hash                =  2;
+        optional int32 flow_id             =  3;
+        optional string dst                =  4;
+        optional qosspec_msg qosspec       =  5;
+        optional bytes pk                  =  6; /* piggyback */
+        optional ipcp_config_msg conf      =  7;
+        optional int32 pid                 =  8;
+        optional layer_info_msg layer_info =  9;
+        optional int32 response            = 10;
+        optional string comp               = 11;
+        optional uint32 timeo_sec          = 12;
+        optional sint32 mpl                = 13;
+        optional int32 result              = 14;
+}
diff --git a/src/lib/pb/ipcp_config.proto b/src/lib/pb/ipcp_config.proto
new file mode 100644
index 00000000..1ff304f1
--- /dev/null
+++ b/src/lib/pb/ipcp_config.proto
@@ -0,0 +1,60 @@
+/*
+ * Ouroboros - Copyright (C) 2016 - 2023
+ *
+ * Layer configuration message
+ *
+ *    Dimitri Staessens <dimitri@ouroboros.rocks>
+ *    Sander Vrijders   <sander@ouroboros.rocks>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/.
+ */
+
+syntax = "proto2";
+
+message layer_info_msg {
+        required string layer_name    =  1;
+        required uint32 dir_hash_algo =  2;
+}
+
+message dt_config_msg {
+        required uint32 addr_size    = 1;
+        required uint32 eid_size     = 2;
+        required uint32 max_ttl      = 3;
+        required uint32 routing_type = 4;
+}
+
+message uni_config_msg {
+        required dt_config_msg dt      = 1;
+        required uint32 addr_auth_type = 2;
+        required uint32 cong_avoid     = 3;
+}
+
+message eth_config_msg {
+        required string dev       = 1;
+        required uint32 ethertype = 2;
+}
+
+message udp_config_msg {
+        required uint32 ip_addr  = 1;
+        required uint32 port     = 2;
+        required uint32 dns_addr = 3; /* set to 0 if unused */
+}
+
+message ipcp_config_msg {
+        required layer_info_msg layer_info =  1;
+        required uint32 ipcp_type          =  2;
+        optional uni_config_msg unicast    =  3;
+        optional udp_config_msg udp        =  4;
+        optional eth_config_msg eth        =  5;
+}
diff --git a/src/lib/pb/irm.proto b/src/lib/pb/irm.proto
new file mode 100644
index 00000000..49afa2e4
--- /dev/null
+++ b/src/lib/pb/irm.proto
@@ -0,0 +1,91 @@
+/*
+ * Ouroboros - Copyright (C) 2016 - 2023
+ *
+ * Messages sent to IRMd
+ *
+ *    Dimitri Staessens <dimitri@ouroboros.rocks>
+ *    Sander Vrijders   <sander@ouroboros.rocks>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/.
+ */
+
+syntax = "proto2";
+
+import "ipcp_config.proto";
+import "qos.proto";
+
+enum irm_msg_code {
+        IRM_CREATE_IPCP       =  1;
+        IPCP_CREATE_R         =  2;
+        IRM_DESTROY_IPCP      =  3;
+        IRM_LIST_IPCPS        =  4;
+        IRM_BOOTSTRAP_IPCP    =  5;
+        IRM_ENROLL_IPCP       =  6;
+        IRM_CONNECT_IPCP      =  7;
+        IRM_DISCONNECT_IPCP   =  8;
+        IRM_BIND_PROGRAM      =  9;
+        IRM_UNBIND_PROGRAM    = 10;
+        IRM_PROC_ANNOUNCE     = 11;
+        IRM_BIND_PROCESS      = 12;
+        IRM_UNBIND_PROCESS    = 13;
+        IRM_CREATE_NAME       = 14;
+        IRM_DESTROY_NAME      = 15;
+        IRM_LIST_NAMES        = 16;
+        IRM_REG_NAME          = 17;
+        IRM_UNREG_NAME        = 18;
+        IRM_FLOW_ALLOC        = 19;
+        IRM_FLOW_ACCEPT       = 20;
+        IRM_FLOW_JOIN         = 21;
+        IRM_FLOW_DEALLOC      = 22;
+        IPCP_FLOW_REQ_ARR     = 23;
+        IPCP_FLOW_ALLOC_REPLY = 24;
+        IRM_REPLY             = 25;
+}
+
+message ipcp_info_msg {
+        required uint32 pid   = 1;
+        required uint32 type  = 2;
+        required string name  = 3;
+        required string layer = 4;
+}
+
+message name_info_msg {
+        required string name   = 1;
+        required uint32 pol_lb = 2;
+}
+
+message irm_msg {
+        required irm_msg_code code    =  1;
+        optional string prog          =  2;
+        optional sint32 pid           =  3;
+        optional string name          =  4;
+        optional uint32 ipcp_type     =  5;
+        optional string layer         =  6;
+        repeated string args          =  7;
+        optional sint32 response      =  8;
+        optional string dst           =  9;
+        optional bytes  hash          = 10;
+        optional sint32 flow_id       = 11;
+        optional qosspec_msg qosspec  = 12;
+        optional ipcp_config_msg conf = 13;
+        optional uint32 opts          = 14;
+        repeated ipcp_info_msg ipcps  = 15;
+        repeated name_info_msg names  = 16;
+        optional uint32 timeo_sec     = 17;
+        optional uint32 timeo_nsec    = 18;
+        optional sint32 mpl           = 19;
+        optional string comp          = 20;
+        optional bytes pk             = 21; /* piggyback */
+        optional sint32 result        = 22;
+}
diff --git a/src/lib/pb/qos.proto b/src/lib/pb/qos.proto
new file mode 100644
index 00000000..81d0e4a0
--- /dev/null
+++ b/src/lib/pb/qos.proto
@@ -0,0 +1,35 @@
+/*
+ * Ouroboros - Copyright (C) 2016 - 2023
+ *
+ * QoS specification message
+ *
+ *    Dimitri Staessens <dimitri@ouroboros.rocks>
+ *    Sander Vrijders   <sander@ouroboros.rocks>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/.
+ */
+
+syntax = "proto2";
+
+message qosspec_msg {
+        required uint32 delay        = 1; /* In ms.                   */
+        required uint64 bandwidth    = 2; /* In bits/s.               */
+        required uint32 availability = 3; /* Class of 9s.             */
+        required uint32 loss         = 4; /* Packet loss.             */
+        required uint32 ber          = 5; /* Bit error rate, ppb.     */
+        required uint32 in_order     = 6; /* In-order delivery.       */
+        required uint32 max_gap      = 7; /* In ms.                   */
+        required uint32 cypher_s     = 8; /* Crypto strength in bits. */
+        required uint32 timeout      = 9; /* Timeout in ms.           */
+}
diff --git a/src/lib/qosspec.proto b/src/lib/qosspec.proto
deleted file mode 100644
index 81d0e4a0..00000000
--- a/src/lib/qosspec.proto
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016 - 2023
- *
- * QoS specification message
- *
- *    Dimitri Staessens <dimitri@ouroboros.rocks>
- *    Sander Vrijders   <sander@ouroboros.rocks>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., http://www.fsf.org/about/contact/.
- */
-
-syntax = "proto2";
-
-message qosspec_msg {
-        required uint32 delay        = 1; /* In ms.                   */
-        required uint64 bandwidth    = 2; /* In bits/s.               */
-        required uint32 availability = 3; /* Class of 9s.             */
-        required uint32 loss         = 4; /* Packet loss.             */
-        required uint32 ber          = 5; /* Bit error rate, ppb.     */
-        required uint32 in_order     = 6; /* In-order delivery.       */
-        required uint32 max_gap      = 7; /* In ms.                   */
-        required uint32 cypher_s     = 8; /* Crypto strength in bits. */
-        required uint32 timeout      = 9; /* Timeout in ms.           */
-}
-- 
cgit v1.2.3