-
Notifications
You must be signed in to change notification settings - Fork 369
Open
Description
Hi!
Adding exactly one entry to a table with size=1 and no keys used to work with an old version of simple_switch_grpc, but it fails now.
action set_lb_key(bit<8> k, bit<8> n) {
_lb_key = k;
_num_workers = n;
}
table get_lb_key {
actions = {
set_lb_key;
}
size = 1;
}
Here is a patch to make it work again.
diff --git a/src/bm_sim/match_units.cpp b/src/bm_sim/match_units.cpp
index 699af02..c47cfe8 100644
--- a/src/bm_sim/match_units.cpp
+++ b/src/bm_sim/match_units.cpp
@@ -805,7 +805,7 @@ template<typename V>
MatchErrorCode
MatchUnitAbstract<V>::add_entry(const std::vector<MatchKeyParam> &match_key,
V value, entry_handle_t *handle, int priority) {
- if (this->get_size_key() == 0) return MatchErrorCode::NO_TABLE_KEY;
+ if (this->get_size_key() == 0 && match_key.size()) return MatchErrorCode::NO_TABLE_KEY;
MatchErrorCode rc = add_entry_(match_key, std::move(value), handle, priority);
if (rc != MatchErrorCode::SUCCESS) return rc;
EntryMeta &meta = entry_meta[HANDLE_INTERNAL(*handle)];
Metadata
Metadata
Assignees
Labels
No labels