1*2598090bSJoe Hershberger /* 2*2598090bSJoe Hershberger * (C) Copyright 2012 3*2598090bSJoe Hershberger * Joe Hershberger, National Instruments, joe.hershberger@ni.com 4*2598090bSJoe Hershberger * 5*2598090bSJoe Hershberger * See file CREDITS for list of people who contributed to this 6*2598090bSJoe Hershberger * project. 7*2598090bSJoe Hershberger * 8*2598090bSJoe Hershberger * This program is free software; you can redistribute it and/or 9*2598090bSJoe Hershberger * modify it under the terms of the GNU General Public License as 10*2598090bSJoe Hershberger * published by the Free Software Foundation; either version 2 of 11*2598090bSJoe Hershberger * the License, or (at your option) any later version. 12*2598090bSJoe Hershberger * 13*2598090bSJoe Hershberger * This program is distributed in the hope that it will be useful, 14*2598090bSJoe Hershberger * but WITHOUT ANY WARRANTY; without even the implied warranty of 15*2598090bSJoe Hershberger * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*2598090bSJoe Hershberger * GNU General Public License for more details. 17*2598090bSJoe Hershberger * 18*2598090bSJoe Hershberger * You should have received a copy of the GNU General Public License 19*2598090bSJoe Hershberger * along with this program; if not, write to the Free Software 20*2598090bSJoe Hershberger * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21*2598090bSJoe Hershberger * MA 02111-1307 USA 22*2598090bSJoe Hershberger */ 23*2598090bSJoe Hershberger 24*2598090bSJoe Hershberger #ifndef __ENV_FLAGS_H__ 25*2598090bSJoe Hershberger #define __ENV_FLAGS_H__ 26*2598090bSJoe Hershberger 27*2598090bSJoe Hershberger enum env_flags_vartype { 28*2598090bSJoe Hershberger env_flags_vartype_string, 29*2598090bSJoe Hershberger env_flags_vartype_decimal, 30*2598090bSJoe Hershberger env_flags_vartype_hex, 31*2598090bSJoe Hershberger env_flags_vartype_bool, 32*2598090bSJoe Hershberger #ifdef CONFIG_CMD_NET 33*2598090bSJoe Hershberger env_flags_vartype_ipaddr, 34*2598090bSJoe Hershberger env_flags_vartype_macaddr, 35*2598090bSJoe Hershberger #endif 36*2598090bSJoe Hershberger env_flags_vartype_end 37*2598090bSJoe Hershberger }; 38*2598090bSJoe Hershberger 39*2598090bSJoe Hershberger #define ENV_FLAGS_VAR ".flags" 40*2598090bSJoe Hershberger #define ENV_FLAGS_ATTR_MAX_LEN 2 41*2598090bSJoe Hershberger #define ENV_FLAGS_VARTYPE_LOC 0 42*2598090bSJoe Hershberger 43*2598090bSJoe Hershberger #ifndef CONFIG_ENV_FLAGS_LIST_STATIC 44*2598090bSJoe Hershberger #define CONFIG_ENV_FLAGS_LIST_STATIC "" 45*2598090bSJoe Hershberger #endif 46*2598090bSJoe Hershberger 47*2598090bSJoe Hershberger #define ENV_FLAGS_LIST_STATIC \ 48*2598090bSJoe Hershberger CONFIG_ENV_FLAGS_LIST_STATIC 49*2598090bSJoe Hershberger 50*2598090bSJoe Hershberger /* 51*2598090bSJoe Hershberger * Parse the flags string from a .flags attribute list into the vartype enum. 52*2598090bSJoe Hershberger */ 53*2598090bSJoe Hershberger enum env_flags_vartype env_flags_parse_vartype(const char *flags); 54*2598090bSJoe Hershberger 55*2598090bSJoe Hershberger #include <search.h> 56*2598090bSJoe Hershberger 57*2598090bSJoe Hershberger /* 58*2598090bSJoe Hershberger * When adding a variable to the environment, initialize the flags for that 59*2598090bSJoe Hershberger * variable. 60*2598090bSJoe Hershberger */ 61*2598090bSJoe Hershberger void env_flags_init(ENTRY *var_entry); 62*2598090bSJoe Hershberger 63*2598090bSJoe Hershberger /* 64*2598090bSJoe Hershberger * Validate the newval for to conform with the requirements defined by its flags 65*2598090bSJoe Hershberger */ 66*2598090bSJoe Hershberger int env_flags_validate(const ENTRY *item, const char *newval, enum env_op op, 67*2598090bSJoe Hershberger int flag); 68*2598090bSJoe Hershberger 69*2598090bSJoe Hershberger /* 70*2598090bSJoe Hershberger * These are the binary flags used in the environment entry->flags variable to 71*2598090bSJoe Hershberger * decribe properties of veriables in the table 72*2598090bSJoe Hershberger */ 73*2598090bSJoe Hershberger #define ENV_FLAGS_VARTYPE_BIN_MASK 0x00000007 74*2598090bSJoe Hershberger /* The actual variable type values use the enum value (within the mask) */ 75*2598090bSJoe Hershberger 76*2598090bSJoe Hershberger #endif /* __ENV_FLAGS_H__ */ 77