P4C
The P4 Compiler
Loading...
Searching...
No Matches
p4info_map.h
1/*
2 * SPDX-FileCopyrightText: 2024 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_COMMON_CONTROL_PLANE_P4INFO_MAP_H_
8#define BACKENDS_P4TOOLS_COMMON_CONTROL_PLANE_P4INFO_MAP_H_
9#include <cstdint>
10#include <map>
11#include <optional>
12
13#include "control-plane/p4RuntimeArchHandler.h"
14#include "control-plane/p4RuntimeSerializer.h"
15#include "lib/cstring.h"
16
17#pragma GCC diagnostic push
18#pragma GCC diagnostic ignored "-Wunused-parameter"
19#pragma GCC diagnostic ignored "-Wpedantic"
20#include "p4/config/v1/p4info.pb.h"
21#pragma GCC diagnostic pop
22
28namespace P4::ControlPlaneAPI {
29
35uint64_t szudzikPairing(p4rt_id_t x, p4rt_id_t y);
36
43class P4InfoMaps {
45 using P4RuntimeIdToControlPlaneNameMap = std::map<uint64_t, cstring>;
46 using ControlPlaneNameToP4RuntimeIdMap = std::map<cstring, uint64_t>;
47
48 protected:
50 P4RuntimeIdToControlPlaneNameMap idToNameMap;
51
53 ControlPlaneNameToP4RuntimeIdMap nameToIdMap;
54
56 virtual void buildP4InfoMaps(const p4::config::v1::P4Info &p4Info);
57
58 public:
59 explicit P4InfoMaps(const p4::config::v1::P4Info &p4Info);
60
63 [[nodiscard]] std::optional<uint64_t> lookUpP4RuntimeId(cstring controlPlaneName) const;
64
67 [[nodiscard]] std::optional<cstring> lookUpControlPlaneName(uint64_t id) const;
68};
69
70} // namespace P4::ControlPlaneAPI
71
72#endif /* BACKENDS_P4TOOLS_COMMON_CONTROL_PLANE_P4INFO_MAP_H_ */
ControlPlaneNameToP4RuntimeIdMap nameToIdMap
Maps control plane names to P4Runtime IDs.
Definition p4info_map.h:53
virtual void buildP4InfoMaps(const p4::config::v1::P4Info &p4Info)
Iterate over the P4Info object and build a mapping from P4 control plane names to their ids.
Definition p4info_map.cpp:20
std::optional< cstring > lookUpControlPlaneName(uint64_t id) const
Definition p4info_map.cpp:89
std::optional< uint64_t > lookUpP4RuntimeId(cstring controlPlaneName) const
Definition p4info_map.cpp:81
P4RuntimeIdToControlPlaneNameMap idToNameMap
Maps P4Runtime IDs to control plane names.
Definition p4info_map.h:50
Definition cstring.h:85
TODO(antonin): High level goals of the generator go here!!
Definition dpdk/control-plane/bfruntime_arch_handler.h:44
uint64_t szudzikPairing(p4rt_id_t x, p4rt_id_t y)
Definition p4info_map.cpp:11