#ifndef FDISK_SUN_LABEL_H
#define FDISK_SUN_LABEL_H

#include <stdint.h>

struct sun_partition {
	uint32_t	start_cylinder;
	uint32_t	num_sectors;
};

struct sun_tag_flag {
	uint16_t	tag;
#define SUN_TAG_UNASSIGNED	0x00	/* Unassigned partition */
#define SUN_TAG_BOOT		0x01	/* Boot partition	*/
#define SUN_TAG_ROOT		0x02	/* Root filesystem	*/
#define SUN_TAG_SWAP		0x03	/* Swap partition	*/
#define SUN_TAG_USR		0x04	/* /usr filesystem	*/
#define SUN_TAG_BACKUP		0x05	/* Full-disk slice	*/
#define SUN_TAG_STAND		0x06	/* Stand partition	*/
#define SUN_TAG_VAR		0x07	/* /var filesystem	*/
#define SUN_TAG_HOME		0x08	/* /home filesystem	*/
#define SUN_TAG_ALTSCTR		0x09	/* Alt sector partition	*/
#define SUN_TAG_CACHE		0x0a	/* Cachefs partition	*/
#define SUN_TAG_RESERVED	0x0b	/* SMI reserved data	*/
#define SUN_TAG_LINUX_SWAP	0x82	/* Linux SWAP		*/
#define SUN_TAG_LINUX_NATIVE	0x83	/* Linux filesystem	*/
#define SUN_TAG_LINUX_LVM	0x8e	/* Linux LVM		*/
#define SUN_TAG_LINUX_RAID	0xfd	/* LInux RAID		*/

	uint16_t	flag;
#define SUN_FLAG_UNMNT		0x01	/* Unmountable partition*/
#define SUN_FLAG_RONLY		0x10	/* Read only		*/
};

#define SUN_LABEL_SIZE		512

#define SUN_LABEL_ID_SIZE	128
#define SUN_VOLUME_ID_SIZE	8

#define SUN_LABEL_VERSION	0x00000001
#define SUN_LABEL_SANE		0x600ddeee
#define SUN_NUM_PARTITIONS	8

struct sun_disk_label {
	char			label_id[SUN_LABEL_ID_SIZE];
	uint32_t			version;
	char			volume_id[SUN_VOLUME_ID_SIZE];
	uint16_t			num_partitions;
	struct sun_tag_flag	part_tags[SUN_NUM_PARTITIONS];
	uint32_t			bootinfo[3];
	uint32_t			sanity;
	uint32_t			resv[10];
	uint32_t			part_timestamps[SUN_NUM_PARTITIONS];
	uint32_t			write_reinstruct;
	uint32_t			read_reinstruct;
	uint8_t			pad[148];
	uint16_t			rpm;
	uint16_t			pcyl;
	uint16_t			apc;
	uint16_t			resv1;
	uint16_t			resv2;
	uint16_t			intrlv;
	uint16_t			ncyl;
	uint16_t			acyl;
	uint16_t			nhead;
	uint16_t			nsect;
	uint16_t			resv3;
	uint16_t			resv4;
	struct sun_partition	partitions[SUN_NUM_PARTITIONS];
	uint16_t			magic;
	uint16_t			cksum;
};

#define SUN_LABEL_MAGIC		0xDABE
#define SUN_LABEL_MAGIC_SWAPPED	0xBEDA
#define sunlabel ((struct sun_disk_label *)MBRbuffer)

/* fdisksunlabel.c */
extern struct systypes sun_sys_types[];
extern void guess_device_type(int fd);
extern int check_sun_label(void);
extern void sun_nolabel(void);
extern void create_sunlabel(void);
extern void sun_delete_partition(int i);
extern int sun_change_sysid(int i, uint16_t sys);
extern void sun_list_table(int xtra);
extern void verify_sun(void);
extern void add_sun_partition(int n, int sys);
extern void sun_write_table(void);
extern void sun_set_alt_cyl(void);
extern void sun_set_ncyl(int cyl);
extern void sun_set_xcyl(void);
extern void sun_set_ilfact(void);
extern void sun_set_rspeed(void);
extern void sun_set_pcylcount(void);
extern void toggle_sunflags(int i, uint16_t mask);
extern int sun_get_sysid(int i);

#endif /* FDISK_SUN_LABEL_H */
