Source to ./cisco_eeprom.h
/*
* Cisco router simulation platform.
* Copyright (c) 2006 Christophe Fillot. All rights reserved.
*
* Cisco EEPROM manipulation functions.
*/
#ifndef __CISCO_EEPROM_H__
#define __CISCO_EEPROM_H__
#include "utils.h"
/* Cisco EEPROM */
struct cisco_eeprom {
char *name;
m_uint16_t *data;
size_t len;
};
/* Find a NM EEPROM */
const struct cisco_eeprom *cisco_eeprom_find_nm(char *name);
/* Find a PA EEPROM */
const struct cisco_eeprom *cisco_eeprom_find_pa(char *name);
/* Find a WIC EEPROM */
const struct cisco_eeprom *cisco_eeprom_find_wic(char *name);
/* Find a C6k EEPROM */
const struct cisco_eeprom *cisco_eeprom_find_c6k(char *name);
/* Find an EEPROM in the specified EEPROM array */
const struct cisco_eeprom *
cisco_eeprom_find(const struct cisco_eeprom *eeproms,char *name);
/* Copy an EEPROM */
int cisco_eeprom_copy(struct cisco_eeprom *dst,const struct cisco_eeprom *src);
/* Free resources used by an EEPROM */
void cisco_eeprom_free(struct cisco_eeprom *eeprom);
/* Return TRUE if the specified EEPROM contains usable data */
int cisco_eeprom_valid(struct cisco_eeprom *eeprom);
/* Get a byte from an EEPROM */
int cisco_eeprom_get_byte(struct cisco_eeprom *eeprom,
size_t offset,m_uint8_t *val);
/* Set a byte to an EEPROM */
int cisco_eeprom_set_byte(struct cisco_eeprom *eeprom,
size_t offset,m_uint8_t val);
/* Get an EEPROM region */
int cisco_eeprom_get_region(struct cisco_eeprom *eeprom,size_t offset,
m_uint8_t *data,size_t data_len);
/* Set an EEPROM region */
int cisco_eeprom_set_region(struct cisco_eeprom *eeprom,size_t offset,
m_uint8_t *data,size_t data_len);
/* Get a field of a Cisco EEPROM v4 */
int cisco_eeprom_v4_get_field(struct cisco_eeprom *eeprom,m_uint8_t *type,
m_uint8_t *len,size_t *offset);
/* Dump a Cisco EEPROM with format version 4 */
void cisco_eeprom_v4_dump(struct cisco_eeprom *eeprom);
/* Returns the offset of the specified field */
int cisco_eeprom_v4_find_field(struct cisco_eeprom *eeprom,
m_uint8_t field_type,
size_t *field_offset);
#endif