at master 34 lines 675 B view raw
1{# SPDX-License-Identifier: GPL-2.0 #} 2 3{% if annotate %} 4/* enum {{ name }} (big-endian) */ 5{% endif %} 6{% if name in public_apis %} 7bool 8{% else %} 9static bool __maybe_unused 10{% endif %} 11xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ name }} *ptr) 12{ 13{% if validate and enumerators %} 14 __be32 raw; 15 u32 val; 16 17 if (xdr_stream_decode_be32(xdr, &raw) < 0) 18 return false; 19 val = be32_to_cpu(raw); 20 /* Compiler may optimize to a range check for dense enums */ 21 switch (val) { 22{% for e in enumerators %} 23 case {{ e.name }}: 24{% endfor %} 25 break; 26 default: 27 return false; 28 } 29 *ptr = raw; 30 return true; 31{% else %} 32 return xdr_stream_decode_be32(xdr, ptr) == 0; 33{% endif %} 34}