mirror of
https://gitlab.com/d3tn/ud3tn.git
synced 2026-08-15 12:50:49 +02:00
This may cause a deadlock which we observed sometimes in the routing integration test in CI as one slot in the BP queue is always needed to finish processing the Bundle in the BP (that causes `agent_forward` in this case). This makes the config agent directly invoke the BP function. Signed-off-by: Felix Walter <felix.walter@d3tn.com>
59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
// SPDX-License-Identifier: BSD-3-Clause OR Apache-2.0
|
|
#ifndef CONFIGPARSER_H_INCLUDED
|
|
#define CONFIGPARSER_H_INCLUDED
|
|
|
|
#include "ud3tn/parser.h"
|
|
#include "ud3tn/result.h"
|
|
#include "ud3tn/router.h"
|
|
|
|
#include <stdint.h>
|
|
|
|
enum config_parser_stage {
|
|
RP_EXPECT_COMMAND_TYPE,
|
|
RP_EXPECT_NODE_CONF_START_DELIMITER,
|
|
RP_EXPECT_NODE_CONF_EID,
|
|
RP_EXPECT_NODE_CONF_RELIABILITY_SEPARATOR,
|
|
RP_EXPECT_NODE_CONF_RELIABILITY,
|
|
RP_EXPECT_NODE_CONF_CLA_ADDR_SEPARATOR,
|
|
RP_EXPECT_CLA_ADDR_START_DELIMITER,
|
|
RP_EXPECT_CLA_ADDR,
|
|
RP_EXPECT_CLA_ADDR_NODES_SEPARATOR,
|
|
RP_EXPECT_NODE_LIST_START_DELIMITER,
|
|
RP_EXPECT_NODE_START_DELIMITER,
|
|
RP_EXPECT_NODE_EID,
|
|
RP_EXPECT_NODE_SEPARATOR,
|
|
RP_EXPECT_NODES_CONTACTS_SEPARATOR,
|
|
RP_EXPECT_CONTACT_LIST_START_DELIMITER,
|
|
RP_EXPECT_CONTACT_START_DELIMITER,
|
|
RP_EXPECT_CONTACT_START_TIME,
|
|
RP_EXPECT_CONTACT_END_TIME,
|
|
RP_EXPECT_CONTACT_BITRATE,
|
|
RP_EXPECT_CONTACT_NODE_LIST_START_DELIMITER,
|
|
RP_EXPECT_CONTACT_NODE_START_DELIMITER,
|
|
RP_EXPECT_CONTACT_NODE_EID,
|
|
RP_EXPECT_CONTACT_NODE_SEPARATOR,
|
|
RP_EXPECT_CONTACT_END_DELIMITER,
|
|
RP_EXPECT_CONTACT_SEPARATOR,
|
|
RP_EXPECT_COMMAND_END_MARKER
|
|
};
|
|
|
|
struct config_parser {
|
|
struct parser *basedata;
|
|
void (*send_callback)(void *, struct router_command *);
|
|
void *send_param;
|
|
enum config_parser_stage stage;
|
|
struct router_command *router_command;
|
|
int current_index;
|
|
char *current_int_data;
|
|
struct endpoint_list *current_eid;
|
|
struct contact_list *current_contact;
|
|
};
|
|
|
|
struct parser *config_parser_init(
|
|
struct config_parser *parser,
|
|
void (*send_callback)(void *, struct router_command *), void *param);
|
|
size_t config_parser_read(struct config_parser *parser,
|
|
const uint8_t *buffer, size_t length);
|
|
enum ud3tn_result config_parser_reset(struct config_parser *parser);
|
|
|
|
#endif /* CONFIGPARSER_H_INCLUDED */
|