aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/files/drivers/platform/mikrotik/routerboot.h
blob: c75f61ebbf6a28a3fca7c6e0bb683985315fc9a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Common definitions for MikroTik RouterBoot data.
 *
 * Copyright (C) 2020 Thibaut VARÈNE <hacks+kernel@slashdirt.org>
 */


#ifndef _ROUTERBOOT_H_
#define _ROUTERBOOT_H_

#include <linux/types.h>

// these magic values are stored in cpu-endianness on flash
#define RB_MAGIC_HARD	(('H') | ('a' << 8) | ('r' << 16) | ('d' << 24))
#define RB_MAGIC_SOFT	(('S') | ('o' << 8) | ('f' << 16) | ('t' << 24))
#define RB_MAGIC_LZOR	(('L') | ('Z' << 8) | ('O' << 16) | ('R' << 24))
#define RB_MAGIC_ERD	(('E' << 16) | ('R' << 8) | ('D'))

#define RB_ART_SIZE	0x10000

#define RB_MTD_HARD_CONFIG	"hard_config"
#define RB_MTD_SOFT_CONFIG	"soft_config"

int routerboot_tag_find(const u8 *bufhead, const size_t buflen, const u16 tag_id, u16 *pld_ofs, u16 *pld_len);
int routerboot_rle_decode(const u8 *in, size_t inlen, u8 *out, size_t *outlen);

int __init rb_hardconfig_init(struct kobject *rb_kobj);
void __exit rb_hardconfig_exit(void);

#endif /* _ROUTERBOOT_H_ */