1/*- 2 * Copyright (c) 2020, Ryan Moeller <freqlabs@FreeBSD.org> 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 * 25 * $FreeBSD$ 26 */ 27 28{# THIS IS A TEMPLATE PROCESSED BY lib/libifconfig/sfp.lua #} 29 30#pragma once 31 32#include <stdint.h> 33 34{% 35for _, ent in ipairs(enums) do 36 if type(ent) == "string" then 37%} 38/* 39 * {*ent*} 40 */ 41 42{% 43 else 44 local enum = ent 45 local name = "sfp_"..enum.name 46 local num, sym, desc, disp 47%} 48/** {*enum.description*} */ 49enum {*name*} { 50{% 51 for _, item in ipairs(enum.values) do 52 val, sym, desc, disp = table.unpack(item) 53 local symbol = string.upper(name).."_"..sym 54%} 55 {*symbol*} = {*val*}, /**< {*desc*} */ 56{% 57 end 58%} 59}; 60 61/** Get the symbolic name of a given {*name*} value */ 62const char *ifconfig_{*name*}_symbol(enum {*name*}); 63 64/** Get a brief description of a given {*name*} value */ 65const char *ifconfig_{*name*}_description(enum {*name*}); 66 67{% 68 if disp then 69%} 70/** Get a shortened user-friendly display name for a given {*name*} value */ 71const char *ifconfig_{*name*}_display(enum {*name*}); 72 73{% 74 end 75 end 76end 77%} 78/* 79 * Descriptions of each enum 80 */ 81 82{% 83for _, ent in ipairs(enums) do 84 if type(ent) == "table" then 85 local enum = ent 86 local name = "sfp_"..enum.name 87%} 88/** Get a brief description of the {*name*} enum */ 89static inline const char * 90ifconfig_enum_{*name*}_description(void) 91{ 92 return ("{*enum.description*}"); 93} 94 95{% 96 end 97end 98%} 99/* 100 * Info struct definitions 101 */ 102 103struct ifconfig_sfp_info { 104{% 105for _, ent in ipairs(enums) do 106 if type(ent) == "table" then 107 local enum = ent 108 local name = "sfp_"..enum.name 109 local t = string.format("uint%d_t", enum.bits) 110%} 111 {*t*} {*name*}; /**< {*enum.description*} */ 112{% 113 end 114end 115%} 116}; 117 118struct ifconfig_sfp_info_strings { 119{% 120for _, ent in ipairs(enums) do 121 if type(ent) == "table" then 122 local enum = ent 123 local name = "sfp_"..enum.name 124%} 125 const char *{*name*}; /**< {*enum.description*} */ 126{% 127 end 128end 129%} 130}; 131