Jan Engelhardt | 0720c12 | 2008-01-20 13:22:42 +0000 | [diff] [blame] | 1 | #include <stdbool.h> |
| 2 | #include <stdint.h> |
| 3 | #include <stdio.h> |
Jan Engelhardt | ef18e81 | 2008-08-04 12:47:48 +0200 | [diff] [blame] | 4 | #include <linux/ip.h> |
Jan Engelhardt | 0720c12 | 2008-01-20 13:22:42 +0000 | [diff] [blame] | 5 | |
Jan Engelhardt | 350661a | 2010-01-31 22:42:52 +0100 | [diff] [blame] | 6 | #ifndef IPTOS_NORMALSVC |
| 7 | # define IPTOS_NORMALSVC 0 |
| 8 | #endif |
| 9 | |
Jan Engelhardt | 0720c12 | 2008-01-20 13:22:42 +0000 | [diff] [blame] | 10 | struct tos_value_mask { |
| 11 | uint8_t value, mask; |
| 12 | }; |
| 13 | |
| 14 | static const struct tos_symbol_info { |
| 15 | unsigned char value; |
| 16 | const char *name; |
| 17 | } tos_symbol_names[] = { |
| 18 | {IPTOS_LOWDELAY, "Minimize-Delay"}, |
| 19 | {IPTOS_THROUGHPUT, "Maximize-Throughput"}, |
| 20 | {IPTOS_RELIABILITY, "Maximize-Reliability"}, |
| 21 | {IPTOS_MINCOST, "Minimize-Cost"}, |
| 22 | {IPTOS_NORMALSVC, "Normal-Service"}, |
Jan Engelhardt | 32b8e61 | 2010-07-23 21:16:14 +0200 | [diff] [blame] | 23 | {}, |
Jan Engelhardt | 0720c12 | 2008-01-20 13:22:42 +0000 | [diff] [blame] | 24 | }; |
| 25 | |
Jan Engelhardt | 0720c12 | 2008-01-20 13:22:42 +0000 | [diff] [blame] | 26 | static bool tos_try_print_symbolic(const char *prefix, |
Jan Engelhardt | 7ac4052 | 2011-01-07 12:34:04 +0100 | [diff] [blame] | 27 | uint8_t value, uint8_t mask) |
Jan Engelhardt | 0720c12 | 2008-01-20 13:22:42 +0000 | [diff] [blame] | 28 | { |
| 29 | const struct tos_symbol_info *symbol; |
| 30 | |
| 31 | if (mask != 0x3F) |
| 32 | return false; |
| 33 | |
| 34 | for (symbol = tos_symbol_names; symbol->name != NULL; ++symbol) |
| 35 | if (value == symbol->value) { |
Jan Engelhardt | 7386635 | 2010-12-18 02:04:59 +0100 | [diff] [blame] | 36 | printf(" %s%s", prefix, symbol->name); |
Jan Engelhardt | 0720c12 | 2008-01-20 13:22:42 +0000 | [diff] [blame] | 37 | return true; |
| 38 | } |
| 39 | |
| 40 | return false; |
| 41 | } |