routerboot.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Common definitions for MikroTik RouterBoot data.
  4. *
  5. * Copyright (C) 2020 Thibaut VARÈNE <[email protected]>
  6. */
  7. #ifndef _ROUTERBOOT_H_
  8. #define _ROUTERBOOT_H_
  9. #include <linux/types.h>
  10. // these magic values are stored in cpu-endianness on flash
  11. #define RB_MAGIC_HARD (('H') | ('a' << 8) | ('r' << 16) | ('d' << 24))
  12. #define RB_MAGIC_SOFT (('S') | ('o' << 8) | ('f' << 16) | ('t' << 24))
  13. #define RB_MAGIC_LZOR (('L') | ('Z' << 8) | ('O' << 16) | ('R' << 24))
  14. #define RB_MAGIC_ERD (('E' << 16) | ('R' << 8) | ('D'))
  15. #define RB_ART_SIZE 0x10000
  16. #define RB_MTD_HARD_CONFIG "hard_config"
  17. #define RB_MTD_SOFT_CONFIG "soft_config"
  18. int routerboot_tag_find(const u8 *bufhead, const size_t buflen, const u16 tag_id, u16 *pld_ofs, u16 *pld_len);
  19. int routerboot_rle_decode(const u8 *in, size_t inlen, u8 *out, size_t *outlen);
  20. int rb_hardconfig_init(struct kobject *rb_kobj, struct mtd_info *mtd);
  21. void rb_hardconfig_exit(void);
  22. int rb_softconfig_init(struct kobject *rb_kobj, struct mtd_info *mtd);
  23. void rb_softconfig_exit(void);
  24. ssize_t routerboot_tag_show_string(const u8 *pld, u16 pld_len, char *buf);
  25. ssize_t routerboot_tag_show_u32s(const u8 *pld, u16 pld_len, char *buf);
  26. #endif /* _ROUTERBOOT_H_ */