P4C
The P4 Compiler
Loading...
Searching...
No Matches
p4infoApi.h
1/*
2 * SPDX-FileCopyrightText: 2024 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef CONTROL_PLANE_P4INFOAPI_H_
8#define CONTROL_PLANE_P4INFOAPI_H_
9
10#include <optional>
11
12#include "control-plane/p4RuntimeArchHandler.h"
13#include "control-plane/p4RuntimeSerializer.h"
14#include "lib/cstring.h"
15
16#pragma GCC diagnostic push
17#pragma GCC diagnostic ignored "-Wunused-parameter"
18#pragma GCC diagnostic ignored "-Wpedantic"
19#include "p4/config/v1/p4info.pb.h"
20#pragma GCC diagnostic pop
21
22namespace P4::ControlPlaneAPI {
23
28template <typename It>
29auto findP4InfoObject(const It &first, const It &last, cstring controlPlaneName) -> const
30 typename std::iterator_traits<It>::value_type * {
31 using T = typename std::iterator_traits<It>::value_type;
32 auto desiredObject = std::find_if(
33 first, last, [&](const T &object) { return object.preamble().name() == controlPlaneName; });
34 if (desiredObject == last) {
35 return nullptr;
36 }
37 return &*desiredObject;
38}
39
44template <typename It>
45auto findP4InfoObject(const It &first, const It &last, p4rt_id_t id) -> const
46 typename std::iterator_traits<It>::value_type * {
47 using T = typename std::iterator_traits<It>::value_type;
48 auto desiredObject =
49 std::find_if(first, last, [&](const T &object) { return object.preamble().id() == id; });
50 if (desiredObject == last) {
51 return nullptr;
52 }
53 return &*desiredObject;
54}
55
58const p4::config::v1::Table *findP4RuntimeTable(const p4::config::v1::P4Info &p4Info,
59 cstring controlPlaneName);
60
63const p4::config::v1::Table *findP4RuntimeTable(const p4::config::v1::P4Info &p4Info, p4rt_id_t id);
64
67const p4::config::v1::MatchField *findP4RuntimeMatchField(const p4::config::v1::Table &p4Table,
68 cstring controlPlaneName);
69
72const p4::config::v1::MatchField *findP4RuntimeMatchField(const p4::config::v1::Table &p4Table,
73 p4rt_id_t id);
74
77const p4::config::v1::Action *findP4RuntimeAction(const p4::config::v1::P4Info &p4Info,
78 cstring controlPlaneName);
79
82const p4::config::v1::Action *findP4RuntimeAction(const p4::config::v1::P4Info &p4Info,
83 p4rt_id_t id);
84
87const p4::config::v1::ActionProfile *findP4RuntimeActionProfile(
88 const p4::config::v1::P4Info &p4Info, cstring controlPlaneName);
89
92const p4::config::v1::ActionProfile *findP4RuntimeActionProfile(
93 const p4::config::v1::P4Info &p4Info, p4rt_id_t id);
94
97const p4::config::v1::Counter *findP4RuntimeCounter(const p4::config::v1::P4Info &p4Info,
98 cstring controlPlaneName);
99
102const p4::config::v1::Counter *findP4RuntimeCounter(const p4::config::v1::P4Info &p4Info,
103 p4rt_id_t id);
104
107const p4::config::v1::DirectCounter *findP4RuntimeDirectCounter(
108 const p4::config::v1::P4Info &p4Info, cstring controlPlaneName);
109
112const p4::config::v1::DirectCounter *findP4RuntimeDirectCounter(
113 const p4::config::v1::P4Info &p4Info, p4rt_id_t id);
114
117const p4::config::v1::Meter *findP4RuntimeMeter(const p4::config::v1::P4Info &p4Info,
118 cstring controlPlaneName);
119
122const p4::config::v1::Meter *findP4RuntimeMeter(const p4::config::v1::P4Info &p4Info, p4rt_id_t id);
123
126const p4::config::v1::DirectMeter *findP4RuntimeDirectMeter(const p4::config::v1::P4Info &p4Info,
127 cstring controlPlaneName);
128
131const p4::config::v1::DirectMeter *findP4RuntimeDirectMeter(const p4::config::v1::P4Info &p4Info,
132 p4rt_id_t id);
133
136const p4::config::v1::ControllerPacketMetadata *findP4RuntimeControllerPacketMetadata(
137 const p4::config::v1::P4Info &p4Info, cstring controlPlaneName);
138
141const p4::config::v1::ControllerPacketMetadata *findP4RuntimeControllerPacketMetadata(
142 const p4::config::v1::P4Info &p4Info, p4rt_id_t id);
143
146const p4::config::v1::ValueSet *findP4RuntimeValueSet(const p4::config::v1::P4Info &p4Info,
147 cstring controlPlaneName);
148
151const p4::config::v1::ValueSet *findP4RuntimeValueSet(const p4::config::v1::P4Info &p4Info,
152 p4rt_id_t id);
153
156const p4::config::v1::Register *findP4RuntimeRegister(const p4::config::v1::P4Info &p4Info,
157 cstring controlPlaneName);
158
161const p4::config::v1::Register *findP4RuntimeRegister(const p4::config::v1::P4Info &p4Info,
162 p4rt_id_t id);
163
166const p4::config::v1::Digest *findP4RuntimeDigest(const p4::config::v1::P4Info &p4Info,
167 cstring controlPlaneName);
168
171const p4::config::v1::Digest *findP4RuntimeDigest(const p4::config::v1::P4Info &p4Info,
172 p4rt_id_t id);
173
176const p4::config::v1::Extern *findP4RuntimeExtern(const p4::config::v1::P4Info &p4Info,
177 cstring controlPlaneName);
178
181const p4::config::v1::Extern *findP4RuntimeExtern(const p4::config::v1::P4Info &p4Info,
182 p4rt_id_t id);
183
186std::optional<p4rt_id_t> getP4RuntimeId(const p4::config::v1::P4Info &p4Info,
187 const P4RuntimeSymbolType &type, cstring controlPlaneName);
188
189} // namespace P4::ControlPlaneAPI
190
191#endif /* CONTROL_PLANE_P4INFOAPI_H_ */
Definition cstring.h:85
TODO(antonin): High level goals of the generator go here!!
Definition dpdk/control-plane/bfruntime_arch_handler.h:44
const p4::config::v1::ValueSet * findP4RuntimeValueSet(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:123
const p4::config::v1::Digest * findP4RuntimeDigest(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:144
const p4::config::v1::Extern * findP4RuntimeExtern(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:154
const p4::config::v1::Meter * findP4RuntimeMeter(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:90
const p4::config::v1::DirectMeter * findP4RuntimeDirectMeter(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:100
const p4::config::v1::ActionProfile * findP4RuntimeActionProfile(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:58
const p4::config::v1::Register * findP4RuntimeRegister(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:134
const p4::config::v1::Table * findP4RuntimeTable(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:18
const p4::config::v1::Counter * findP4RuntimeCounter(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:69
const p4::config::v1::MatchField * findP4RuntimeMatchField(const p4::config::v1::Table &p4Table, cstring controlPlaneName)
Definition p4infoApi.cpp:28
const p4::config::v1::Action * findP4RuntimeAction(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:48
const p4::config::v1::DirectCounter * findP4RuntimeDirectCounter(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:79
const p4::config::v1::ControllerPacketMetadata * findP4RuntimeControllerPacketMetadata(const p4::config::v1::P4Info &p4Info, cstring controlPlaneName)
Definition p4infoApi.cpp:111
std::optional< p4rt_id_t > getP4RuntimeId(const p4::config::v1::P4Info &p4Info, const P4RuntimeSymbolType &type, cstring controlPlaneName)
Definition p4infoApi.cpp:174