/* * Ouroboros - Copyright (C) 2016 - 2026 * * The IPC Resource Manager - Registry - Flows * * Dimitri Staessens * Sander Vrijders * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., http://www.fsf.org/about/contact/. */ #ifndef OUROBOROS_IRMD_REG_FLOW_H #define OUROBOROS_IRMD_REG_FLOW_H #include #include #include #include #include #include #include #include #include #include struct reg_flow { struct list_head next; struct flow_info info; int response; buffer_t req_data; buffer_t rsp_data; struct timespec t0; char name[NAME_SIZE + 1]; bool direct; /* Tier-2 re-key state (encrypted flows only) */ struct { bool encrypted; /* flow carries a cipher */ uint8_t epoch; /* last epoch installed by app */ bool initiator; /* OAP initiator (role 0) */ bool in_flight; /* a re-key is in progress */ bool req_queued; /* a peer REQ is in the inbox */ bool resp_queued; /* a peer RESP is in the inbox */ uint8_t * pending_seed; /* secure heap; NULL until set */ uint8_t pending_epoch; bool pending_initiator; /* pending seed: oap_cli side */ bool has_pending; /* new seed awaits app pull */ uint8_t pulled; /* direct: per-app pull mask */ buffer_t peer_crt; /* peer cert DER, cached at HS */ } rk; struct ssm_rbuff * n_rb; struct ssm_rbuff * n_1_rb; }; struct reg_flow * reg_flow_create(const struct flow_info * info); void reg_flow_destroy(struct reg_flow * flow); int reg_flow_update(struct reg_flow * flow, struct flow_info * info); #endif /* OUROBOROS_IRMD_REG_FLOW_H */