package nl

// All the following constants are coming from:
// https://github.com/torvalds/linux/blob/master/include/uapi/linux/devlink.h

const (
	GENL_DEVLINK_VERSION = 1
	GENL_DEVLINK_NAME    = "devlink"
)

const (
	DEVLINK_CMD_GET           = 1
	DEVLINK_CMD_PORT_GET      = 5
	DEVLINK_CMD_PORT_SET      = 6
	DEVLINK_CMD_PORT_NEW      = 7
	DEVLINK_CMD_PORT_DEL      = 8
	DEVLINK_CMD_PORT_SPLIT    = 9
	DEVLINK_CMD_PORT_UNSPLIT  = 10
	DEVLINK_CMD_ESWITCH_GET   = 29
	DEVLINK_CMD_ESWITCH_SET   = 30
	DEVLINK_CMD_RESOURCE_DUMP = 36
	DEVLINK_CMD_PARAM_GET     = 38
	DEVLINK_CMD_PARAM_SET     = 39
	DEVLINK_CMD_INFO_GET      = 51
)

const (
	DEVLINK_ATTR_BUS_NAME                   = 1
	DEVLINK_ATTR_DEV_NAME                   = 2
	DEVLINK_ATTR_PORT_INDEX                 = 3
	DEVLINK_ATTR_PORT_TYPE                  = 4
	DEVLINK_ATTR_PORT_NETDEV_IFINDEX        = 6
	DEVLINK_ATTR_PORT_NETDEV_NAME           = 7
	DEVLINK_ATTR_PORT_IBDEV_NAME            = 8
	DEVLINK_ATTR_PORT_SPLIT_COUNT           = 9
	DEVLINK_ATTR_ESWITCH_MODE               = 25
	DEVLINK_ATTR_ESWITCH_INLINE_MODE        = 26
	DEVLINK_ATTR_ESWITCH_ENCAP_MODE         = 62
	DEVLINK_ATTR_RESOURCE_LIST              = 63 /* nested */
	DEVLINK_ATTR_RESOURCE                   = 64 /* nested */
	DEVLINK_ATTR_RESOURCE_NAME              = 65 /* string */
	DEVLINK_ATTR_RESOURCE_ID                = 66 /* u64 */
	DEVLINK_ATTR_RESOURCE_SIZE              = 67 /* u64 */
	DEVLINK_ATTR_RESOURCE_SIZE_NEW          = 68 /* u64 */
	DEVLINK_ATTR_RESOURCE_SIZE_VALID        = 69 /* u8 */
	DEVLINK_ATTR_RESOURCE_SIZE_MIN          = 70 /* u64 */
	DEVLINK_ATTR_RESOURCE_SIZE_MAX          = 71 /* u64 */
	DEVLINK_ATTR_RESOURCE_SIZE_GRAN         = 72 /* u64 */
	DEVLINK_ATTR_RESOURCE_UNIT              = 73 /* u8 */
	DEVLINK_ATTR_RESOURCE_OCC               = 74 /* u64 */
	DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID    = 75 /* u64 */
	DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS = 76 /* u64 */
	DEVLINK_ATTR_PORT_FLAVOUR               = 77 /* u16 */
	DEVLINK_ATTR_PORT_NUMBER                = 78 /* u32 */
	DEVLINK_ATTR_INFO_DRIVER_NAME           = 98
	DEVLINK_ATTR_INFO_SERIAL_NUMBER         = 99
	DEVLINK_ATTR_INFO_VERSION_FIXED         = 100
	DEVLINK_ATTR_INFO_VERSION_RUNNING       = 101
	DEVLINK_ATTR_INFO_VERSION_STORED        = 102
	DEVLINK_ATTR_INFO_VERSION_NAME          = 103
	DEVLINK_ATTR_INFO_VERSION_VALUE         = 104
	DEVLINK_ATTR_PORT_PCI_PF_NUMBER         = 127 /* u16 */
	DEVLINK_ATTR_PORT_PCI_VF_NUMBER         = 128 /* u16 */
	DEVLINK_ATTR_PORT_FUNCTION              = 145 /* nested */
	DEVLINK_ATTR_PORT_EXTERNAL              = 149 /* u8 */
	DEVLINK_ATTR_PORT_CONTROLLER_NUMBER     = 150 /* u32 */
	DEVLINK_ATTR_PORT_PCI_SF_NUMBER         = 164 /* u32 */
)

const (
	DEVLINK_ESWITCH_MODE_LEGACY    = 0
	DEVLINK_ESWITCH_MODE_SWITCHDEV = 1
)

const (
	DEVLINK_ESWITCH_INLINE_MODE_NONE      = 0
	DEVLINK_ESWITCH_INLINE_MODE_LINK      = 1
	DEVLINK_ESWITCH_INLINE_MODE_NETWORK   = 2
	DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 3
)

const (
	DEVLINK_ESWITCH_ENCAP_MODE_NONE  = 0
	DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 1
)

const (
	DEVLINK_PORT_FLAVOUR_PHYSICAL = 0
	DEVLINK_PORT_FLAVOUR_CPU      = 1
	DEVLINK_PORT_FLAVOUR_DSA      = 2
	DEVLINK_PORT_FLAVOUR_PCI_PF   = 3
	DEVLINK_PORT_FLAVOUR_PCI_VF   = 4
	DEVLINK_PORT_FLAVOUR_VIRTUAL  = 5
	DEVLINK_PORT_FLAVOUR_UNUSED   = 6
	DEVLINK_PORT_FLAVOUR_PCI_SF   = 7
)

const (
	DEVLINK_PORT_TYPE_NOTSET = 0
	DEVLINK_PORT_TYPE_AUTO   = 1
	DEVLINK_PORT_TYPE_ETH    = 2
	DEVLINK_PORT_TYPE_IB     = 3
)

const (
	DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 1
	DEVLINK_PORT_FN_ATTR_STATE         = 2
	DEVLINK_PORT_FN_ATTR_OPSTATE       = 3
)

const (
	DEVLINK_PORT_FN_STATE_INACTIVE = 0
	DEVLINK_PORT_FN_STATE_ACTIVE   = 1
)

const (
	DEVLINK_PORT_FN_OPSTATE_DETACHED = 0
	DEVLINK_PORT_FN_OPSTATE_ATTACHED = 1
)

const (
	DEVLINK_RESOURCE_UNIT_ENTRY uint8 = 0
)

const (
	DEVLINK_ATTR_PARAM             = iota + 80 /* nested */
	DEVLINK_ATTR_PARAM_NAME                    /* string */
	DEVLINK_ATTR_PARAM_GENERIC                 /* flag */
	DEVLINK_ATTR_PARAM_TYPE                    /* u8 */
	DEVLINK_ATTR_PARAM_VALUES_LIST             /* nested */
	DEVLINK_ATTR_PARAM_VALUE                   /* nested */
	DEVLINK_ATTR_PARAM_VALUE_DATA              /* dynamic */
	DEVLINK_ATTR_PARAM_VALUE_CMODE             /* u8 */
)

const (
	DEVLINK_PARAM_TYPE_U8     = 1
	DEVLINK_PARAM_TYPE_U16    = 2
	DEVLINK_PARAM_TYPE_U32    = 3
	DEVLINK_PARAM_TYPE_STRING = 5
	DEVLINK_PARAM_TYPE_BOOL   = 6
)

const (
	DEVLINK_PARAM_CMODE_RUNTIME = iota
	DEVLINK_PARAM_CMODE_DRIVERINIT
	DEVLINK_PARAM_CMODE_PERMANENT
)
