Upcoming commits add a user for ofputil_packet_in_reason_from_string() and more users for ofputil_packet_in_reason_to_string().
Signed-off-by: Ben Pfaff <[email protected]> --- lib/ofp-print.c | 22 ++-------------------- lib/ofp-util.c | 35 +++++++++++++++++++++++++++++++++++ lib/ofp-util.h | 4 ++++ 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/lib/ofp-print.c b/lib/ofp-print.c index 1e36662..ae7ed08 100644 --- a/lib/ofp-print.c +++ b/lib/ofp-print.c @@ -80,24 +80,6 @@ ofp_packet_to_string(const void *data, size_t len) return ds_cstr(&ds); } -static const char * -ofp_packet_in_reason_to_string(enum ofp_packet_in_reason reason) -{ - static char s[32]; - - switch (reason) { - case OFPR_NO_MATCH: - return "no_match"; - case OFPR_ACTION: - return "action"; - case OFPR_INVALID_TTL: - return "invalid_ttl"; - default: - sprintf(s, "%d", (int) reason); - return s; - } -} - static void ofp_print_packet_in(struct ds *string, const struct ofp_header *oh, int verbosity) @@ -140,7 +122,7 @@ ofp_print_packet_in(struct ds *string, const struct ofp_header *oh, } ds_put_format(string, " (via %s)", - ofp_packet_in_reason_to_string(pin.reason)); + ofputil_packet_in_reason_to_string(pin.reason)); ds_put_format(string, " data_len=%zu", pin.packet_len); if (pin.buffer_id == UINT32_MAX) { @@ -1354,7 +1336,7 @@ ofp_print_nxt_set_async_config(struct ds *string, for (j = 0; j < 32; j++) { if (nac->packet_in_mask[i] & htonl(1u << j)) { ds_put_format(string, " %s", - ofp_packet_in_reason_to_string(j)); + ofputil_packet_in_reason_to_string(j)); } } if (!nac->packet_in_mask[i]) { diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 53b5af1..704823a 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -1756,6 +1756,41 @@ ofputil_encode_packet_in(const struct ofputil_packet_in *pin, return packet; } +const char * +ofputil_packet_in_reason_to_string(enum ofp_packet_in_reason reason) +{ + static char s[INT_STRLEN(int) + 1]; + + switch (reason) { + case OFPR_NO_MATCH: + return "no_match"; + case OFPR_ACTION: + return "action"; + case OFPR_INVALID_TTL: + return "invalid_ttl"; + + case OFPR_N_REASONS: + default: + sprintf(s, "%d", (int) reason); + return s; + } +} + +bool +ofputil_packet_in_reason_from_string(const char *s, + enum ofp_packet_in_reason *reason) +{ + int i; + + for (i = 0; i < OFPR_N_REASONS; i++) { + if (!strcasecmp(s, ofputil_packet_in_reason_to_string(i))) { + *reason = i; + return true; + } + } + return false; +} + enum ofperr ofputil_decode_packet_out(struct ofputil_packet_out *po, const struct ofp_packet_out *opo) diff --git a/lib/ofp-util.h b/lib/ofp-util.h index 72abd0b..0ca1d99 100644 --- a/lib/ofp-util.h +++ b/lib/ofp-util.h @@ -246,6 +246,10 @@ struct ofpbuf *ofputil_encode_packet_in(const struct ofputil_packet_in *, int ofputil_decode_packet_in(struct ofputil_packet_in *pi, const struct ofp_header *oh); +const char *ofputil_packet_in_reason_to_string(enum ofp_packet_in_reason); +bool ofputil_packet_in_reason_from_string(const char *, + enum ofp_packet_in_reason *); + /* Abstract packet-out message. */ struct ofputil_packet_out { const void *packet; /* Packet data, if buffer_id == UINT32_MAX. */ -- 1.7.2.5 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
