diff --git a/common/state/state.c b/common/state/state.c index 98a7db3..6399bd3 100644 --- a/common/state/state.c +++ b/common/state/state.c @@ -693,6 +693,27 @@ return 0; } +int state_read_mac(struct state *state, const char *name, u8 *buf) +{ + struct state_variable *svar; + struct state_mac *mac; + + if (!state || !name || !buf) + return -EINVAL; + + svar = state_find_var(state, name); + if (IS_ERR(svar)) + return PTR_ERR(svar); + + if (svar->type->type != STATE_VARIABLE_TYPE_MAC) + return -EINVAL; + + mac = to_state_mac(svar); + memcpy(buf, mac->value, 6); + + return 0; +} + void state_info(void) { struct state *state; diff --git a/include/state.h b/include/state.h index 63164f9..f1882ae 100644 --- a/include/state.h +++ b/include/state.h @@ -23,4 +23,6 @@ int state_save(struct state *state); void state_info(void); +int state_read_mac(struct state *state, const char *name, u8 *buf); + #endif /* __STATE_H */