diff options
| author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2023-08-27 17:59:20 +0200 | 
|---|---|---|
| committer | Sander Vrijders <sander@ouroboros.rocks> | 2023-08-30 17:11:41 +0200 | 
| commit | 3a321cc77e0f6d29167a925dd706fc36e5aa7cdd (patch) | |
| tree | 38354765060ed72d98b70e084edcfd061271d018 /src/lib/pb | |
| parent | 08332eefba9aa4b08d00e190720de4771081e855 (diff) | |
| download | ouroboros-3a321cc77e0f6d29167a925dd706fc36e5aa7cdd.tar.gz ouroboros-3a321cc77e0f6d29167a925dd706fc36e5aa7cdd.zip | |
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>
Diffstat (limited to 'src/lib/pb')
| -rw-r--r-- | src/lib/pb/cacep.proto | 39 | ||||
| -rw-r--r-- | src/lib/pb/enroll.proto | 42 | ||||
| -rw-r--r-- | src/lib/pb/ipcp.proto | 58 | ||||
| -rw-r--r-- | src/lib/pb/ipcp_config.proto | 60 | ||||
| -rw-r--r-- | src/lib/pb/irm.proto | 91 | ||||
| -rw-r--r-- | src/lib/pb/qos.proto | 35 | 
6 files changed, 325 insertions, 0 deletions
| 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.           */ +} | 
