// SPDX-License-Identifier: BSD-3-Clause OR Apache-2.0 #include "bundle6/create.h" #include "bundle7/create.h" #include "ud3tn/agent_util.h" #include "ud3tn/bundle.h" #include "ud3tn/bundle_processor.h" #include "ud3tn/eid.h" #include #include #include #include struct bundle *agent_create_bundle(const uint8_t bp_version, const struct eid local_admin_endpoint, const char *sink_id, const struct eid destination, const uint64_t creation_timestamp_ms, const uint64_t sequence_number, const uint64_t lifetime_ms, void *payload, size_t payload_length, enum bundle_proc_flags flags) { const struct eid source_eid = eid_get_agent_eid(local_admin_endpoint, sink_id); if (eid_is_error(source_eid)) return NULL; struct bundle *result; if (bp_version == 6) result = bundle6_create_local( payload, payload_length, source_eid, destination, eid_get_null(), creation_timestamp_ms, sequence_number, lifetime_ms, flags); else result = bundle7_create_local( payload, payload_length, source_eid, destination, eid_get_null(), creation_timestamp_ms, sequence_number, lifetime_ms, flags); eid_free(source_eid); return result; } struct bundle *agent_create_forward_bundle_direct( const struct bp_context *bundle_processor_context, const struct eid local_admin_endpoint, const uint8_t bp_version, const char *sink_id, const struct eid destination, const uint64_t creation_timestamp_s, const uint64_t sequence_number, const uint64_t lifetime, void *payload, size_t payload_length, enum bundle_proc_flags flags) { struct bundle *bundle = agent_create_bundle( bp_version, local_admin_endpoint, sink_id, destination, creation_timestamp_s, sequence_number, lifetime, payload, payload_length, flags ); if (!bundle) return NULL; const enum ud3tn_result dispatch_res = bundle_processor_bundle_dispatch( (void *)bundle_processor_context, bundle ); return dispatch_res == UD3TN_OK ? bundle : NULL; }