Usually the received CAN frames can be processed/routed as much as 'max_hops' times (which is given at module load time of the can-gw module). Introduce a new configuration option to reduce the number of possible hops for a specific gateway rule to a value smaller then max_hops.
Showing the changes to include/uapi/linux (1 of 2 files). Show all
Unified · Split
| @@ -45,6 +45,7 @@ enum { · 44 unmodified lines | ||
| 45 | 45 | CGW_DST_IF, /* ifindex of destination network interface */ |
| 46 | 46 | CGW_FILTER, /* specify struct can_filter on source CAN device */ |
| 47 | 47 | CGW_DELETED, /* number of deleted CAN frames (see max_hops param) */ |
| 48 | + CGW_LIM_HOPS, /* limit the number of hops of this specific rule */ | |
| 48 | 49 | __CGW_MAX |
| 49 | 50 | }; |
| 50 | 51 | |
| @@ -116,13 +117,19 @@ enum { · 65 unmodified lines | ||
| 116 | 117 | * Sets a CAN receive filter for the gateway job specified by the |
| 117 | 118 | * struct can_filter described in include/linux/can.h |
| 118 | 119 | * |
| 119 | − * CGW_MOD_XXX (length 17 bytes): | |
| 120 | + * CGW_MOD_(AND|OR|XOR|SET) (length 17 bytes): | |
| 120 | 121 | * Specifies a modification that's done to a received CAN frame before it is |
| 121 | 122 | * send out to the destination interface. |
| 122 | 123 | * |
| 123 | 124 | * <struct can_frame> data used as operator |
| 124 | 125 | * <u8> affected CAN frame elements |
| 125 | 126 | * |
| 127 | + * CGW_LIM_HOPS (length 1 byte): | |
| 128 | + * Limit the number of hops of this specific rule. Usually the received CAN | |
| 129 | + * frame can be processed as much as 'max_hops' times (which is given at module | |
| 130 | + * load time of the can-gw module). This value is used to reduce the number of | |
| 131 | + * possible hops for this gateway rule to a value smaller then max_hops. | |
| 132 | + * | |
| 126 | 133 | * CGW_CS_XOR (length 4 bytes): |
| 127 | 134 | * Set a simple XOR checksum starting with an initial value into |
| 128 | 135 | * data[result-idx] using data[start-idx] .. data[end-idx] |