-#define PRINT_HT_ACTION(v) (\
- (v) == 0 ? ND_PRINT("TxChWidth"): \
- (v) == 1 ? ND_PRINT("MIMOPwrSave"): \
- ND_PRINT("Act#%u", (v)))
-#define PRINT_BA_ACTION(v) (\
- (v) == 0 ? ND_PRINT("ADDBA Request"): \
- (v) == 1 ? ND_PRINT("ADDBA Response"): \
- (v) == 2 ? ND_PRINT("DELBA"): \
- ND_PRINT("Act#%u", (v)))
-#define PRINT_MESHLINK_ACTION(v) (\
- (v) == 0 ? ND_PRINT("Request"): \
- (v) == 1 ? ND_PRINT("Report"): \
- ND_PRINT("Act#%u", (v)))
-#define PRINT_MESHPEERING_ACTION(v) (\
- (v) == 0 ? ND_PRINT("Open"): \
- (v) == 1 ? ND_PRINT("Confirm"): \
- (v) == 2 ? ND_PRINT("Close"): \
- ND_PRINT("Act#%u", (v)))
-#define PRINT_MESHPATH_ACTION(v) (\
- (v) == 0 ? ND_PRINT("Request"): \
- (v) == 1 ? ND_PRINT("Report"): \
- (v) == 2 ? ND_PRINT("Error"): \
- (v) == 3 ? ND_PRINT("RootAnnouncement"): \
- ND_PRINT("Act#%u", (v)))
-
-#define PRINT_MESH_ACTION(v) (\
- (v) == 0 ? ND_PRINT("MeshLink"): \
- (v) == 1 ? ND_PRINT("HWMP"): \
- (v) == 2 ? ND_PRINT("Gate Announcement"): \
- (v) == 3 ? ND_PRINT("Congestion Control"): \
- (v) == 4 ? ND_PRINT("MCCA Setup Request"): \
- (v) == 5 ? ND_PRINT("MCCA Setup Reply"): \
- (v) == 6 ? ND_PRINT("MCCA Advertisement Request"): \
- (v) == 7 ? ND_PRINT("MCCA Advertisement"): \
- (v) == 8 ? ND_PRINT("MCCA Teardown"): \
- (v) == 9 ? ND_PRINT("TBTT Adjustment Request"): \
- (v) == 10 ? ND_PRINT("TBTT Adjustment Response"): \
- ND_PRINT("Act#%u", (v)))
-#define PRINT_MULTIHOP_ACTION(v) (\
- (v) == 0 ? ND_PRINT("Proxy Update"): \
- (v) == 1 ? ND_PRINT("Proxy Update Confirmation"): \
- ND_PRINT("Act#%u", (v)))
-#define PRINT_SELFPROT_ACTION(v) (\
- (v) == 1 ? ND_PRINT("Peering Open"): \
- (v) == 2 ? ND_PRINT("Peering Confirm"): \
- (v) == 3 ? ND_PRINT("Peering Close"): \
- (v) == 4 ? ND_PRINT("Group Key Inform"): \
- (v) == 5 ? ND_PRINT("Group Key Acknowledge"): \
- ND_PRINT("Act#%u", (v)))
+static const struct tok category_str[] = {
+ { 0, "Spectrum Management" },
+ { 1, "QoS" },
+ { 2, "DLS" },
+ { 3, "BA" },
+ { 7, "HT" },
+ { 13, "MeshAction" },
+ { 14, "MultihopAction" },
+ { 15, "SelfprotectAction" },
+ { 127, "Vendor" },
+ { 0, NULL }
+};
+
+static const struct tok act_ba_str[] = {
+ { 0, "ADDBA Request" },
+ { 1, "ADDBA Response" },
+ { 2, "DELBA" },
+ { 0, NULL }
+};
+
+static const struct tok act_ht_str[] = {
+ { 0, "TxChWidth" },
+ { 1, "MIMOPwrSave" },
+ { 0, NULL }
+};
+
+static const struct tok act_mesh_str[] = {
+ { 0, "MeshLink" },
+ { 1, "HWMP" },
+ { 2, "Gate Announcement" },
+ { 3, "Congestion Control" },
+ { 4, "MCCA Setup Request" },
+ { 5, "MCCA Setup Reply" },
+ { 6, "MCCA Advertisement Request" },
+ { 7, "MCCA Advertisement" },
+ { 8, "MCCA Teardown" },
+ { 9, "TBTT Adjustment Request" },
+ { 10, "TBTT Adjustment Response" },
+ { 0, NULL }
+};
+
+static const struct tok act_mhop_str[] = {
+ { 0, "Proxy Update" },
+ { 1, "Proxy Update Confirmation" },
+ { 0, NULL }
+};
+
+static const struct tok act_selfpr_str[] = {
+ { 1, "Peering Open" },
+ { 2, "Peering Confirm" },
+ { 3, "Peering Close" },
+ { 4, "Group Key Inform" },
+ { 5, "Group Key Acknowledge" },
+ { 0, NULL }
+};
+
+static const struct uint_tokary category2tokary[] = {
+ { 3, act_ba_str },
+ { 7, act_ht_str },
+ { 13, act_mesh_str },
+ { 14, act_mhop_str },
+ { 15, act_selfpr_str },
+ /* uint2tokary() does not use array termination. */
+};