udev

package
v1.8.0-RC2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 28, 2021 License: Apache-2.0 Imports: 14 Imported by: 4

Documentation

Index

Constants

View Source
const (
	NDMBlockDevicePrefix      = "blockdevice-"         // NDMBlockDevicePrefix used as device's uuid prefix
	UDEV_SUBSYSTEM            = "block"                // udev to filter this device type
	UDEV_SYSTEM               = "disk"                 // used to filter devices other than disk which udev tracks (eg. CD ROM)
	UDEV_PARTITION            = "partition"            // used to filter out partitions
	UDEV_PATH                 = "DEVPATH"              // udev attribute to get device path
	UDEV_WWN                  = "ID_WWN"               // udev attribute to get device WWN number
	UDEV_SERIAL               = "ID_SERIAL_SHORT"      // udev attribute to get device serial number
	UDEV_SERIAL_FULL          = "ID_SERIAL"            // udev attribute to get - separated vendor, model, serial
	UDEV_BUS                  = "ID_BUS"               // udev attribute to get bus name
	UDEV_MODEL                = "ID_MODEL"             // udev attribute to get device model number
	UDEV_VENDOR               = "ID_VENDOR"            // udev attribute to get device vendor details
	UDEV_TYPE                 = "ID_TYPE"              // udev attribute to get device type
	UDEV_MAJOR                = "MAJOR"                // udev attribute to get device major no
	UDEV_MINOR                = "MINOR"                // udev attribute to get device minor no
	UDEV_UUID                 = "UDEV_UUID"            // ndm attribute to get device uuid
	UDEV_SYSPATH              = "UDEV_SYSPATH"         // udev attribute to get device syspath
	UDEV_ACTION               = "UDEV_ACTION"          // udev attribute to get monitor device action
	UDEV_ACTION_ADD           = "add"                  // udev attribute constant for add action
	UDEV_ACTION_REMOVE        = "remove"               // udev attribute constant for remove action
	UDEV_ACTION_CHANGE        = "change"               // udev attribute constant for change action
	UDEV_DEVTYPE              = "DEVTYPE"              // udev attribute to get device device type ie - disk or part
	UDEV_SOURCE               = "udev"                 // udev source constant
	UDEV_SYSPATH_PREFIX       = "/sys/dev/block/"      // udev syspath prefix
	UDEV_DEVNAME              = "DEVNAME"              // udev attribute contain disk name given by kernel
	UDEV_DEVLINKS             = "DEVLINKS"             // udev attribute contain devlinks of a disk
	BY_ID_LINK                = "by-id"                // by-path devlink contains this string
	BY_PATH_LINK              = "by-path"              // by-path devlink contains this string
	LINK_ID_INDEX             = 4                      // this is used to get link index from dev link
	UDEV_FS_TYPE              = "ID_FS_TYPE"           // file system type the partition
	UDEV_FS_UUID              = "ID_FS_UUID"           // UUID of the filesystem present
	UDEV_PARTITION_TABLE_TYPE = "ID_PART_TABLE_TYPE"   // udev attribute to get partition table type(gpt/dos)
	UDEV_PARTITION_TABLE_UUID = "ID_PART_TABLE_UUID"   // udev attribute to get partition table UUID
	UDEV_PARTITION_NUMBER     = "ID_PART_ENTRY_NUMBER" // udev attribute to get partition number
	UDEV_PARTITION_UUID       = "ID_PART_ENTRY_UUID"   // udev attribute to get partition uuid
	UDEV_PARTITION_TYPE       = "ID_PART_ENTRY_TYPE"   // udev attribute to get partition type
	UDEV_DM_UUID              = "DM_UUID"              // udev attribute to get the device mapper uuid
	// UDEV_DM_NAME is udev attribute to get the name of the dm device. This is used to generate the device mapper path
	UDEV_DM_NAME = "DM_NAME"
)

Variables

This section is empty.

Functions

func OsDiskName

func OsDiskName() (string, string, error)

OsDiskName returns os disk name given by kernel

Types

type MockOsDiskDetails

type MockOsDiskDetails struct {
	OsDiskName     string
	DevType        string
	DevNode        string
	Size           string
	SysPath        string
	Model          string
	Serial         string
	Vendor         string
	Wwn            string
	Uid            string
	FileSystem     string
	Mountpoint     string
	PartTableType  string
	PartTableUUID  string
	IdType         string
	ByIdDevLinks   []string
	ByPathDevLinks []string
	Dependents     bd.DependentBlockDevices
}

MockOsDiskDetails struct contain different attribute of os disk.

func MockDiskDetails

func MockDiskDetails() (MockOsDiskDetails, error)

MockDiskDetails returns os disk details which is used in unit test.

type Udev

type Udev struct {
	// contains filtered or unexported fields
}

Udev wraps a libudev udev struct

func NewUdev

func NewUdev() (*Udev, error)

NewUdev is a function and which returns a pointer to a new Udev

func (u *Udev) NewDeviceFromNetlink(source string) (*UdevMonitor, error)

NewDeviceFromNetlink use newUdeviceMonitor() and use returns UdevMonitor pointer in success The function returns nil on failure it can monitor udev or kernel as source.

func (*Udev) NewDeviceFromSysPath

func (u *Udev) NewDeviceFromSysPath(sysPath string) (*UdevDevice, error)

NewDeviceFromSysPath identify the block device currently attached to the system at given sysPath and returns that pointer of C udev_device structure. The caller can query all(available) the disk properties using returned C udev_device structure.

func (*Udev) NewUdevEnumerate

func (u *Udev) NewUdevEnumerate() (*UdevEnumerate, error)

NewUdevEnumerate returns a pointer to a Udevenumerate

func (*Udev) UnrefUdev

func (u *Udev) UnrefUdev()

UnrefUdev frees udev structure.

type UdevDevice

type UdevDevice struct {
	// contains filtered or unexported fields
}

UdevDevice wraps a libudev device object

func (*UdevDevice) DiskInfoFromLibudev

func (device *UdevDevice) DiskInfoFromLibudev() UdevDiskDetails

DiskInfoFromLibudev returns disk attribute extracted using libudev apicalls.

func (*UdevDevice) GetAction

func (ud *UdevDevice) GetAction() string

GetAction returns device action when it is monitored. It can be add,remove,online,offline,change

func (device *UdevDevice) GetDevLinks() map[string][]string

GetDevLinks returns syspath of a disk using syspath we can fell details in diskInfo struct using udev probe

func (*UdevDevice) GetDevnode

func (ud *UdevDevice) GetDevnode() string

GetDevnode returns the device node file name belonging to the udev device. The path is an absolute path, and starts with the device directory.

func (*UdevDevice) GetDevtype

func (ud *UdevDevice) GetDevtype() string

GetDevtype returns the devtype string of the udev device.

func (*UdevDevice) GetFileSystemInfo added in v0.3.0

func (device *UdevDevice) GetFileSystemInfo() string

GetFileSystemInfo returns filesystem type on disk/partition if it exists.

func (*UdevDevice) GetPartitionNumber added in v0.5.0

func (device *UdevDevice) GetPartitionNumber() uint8

GetPartitionNumber returns the partition number of the device, if the device is partition eg: /dev/sdb2 -> 2

func (*UdevDevice) GetPartitionType added in v0.3.0

func (device *UdevDevice) GetPartitionType() string

GetPartitionType returns the partition type of the partition, like DOS, lvm2 etc

func (*UdevDevice) GetPath added in v0.4.5

func (device *UdevDevice) GetPath() string

GetPath returns the path of device in /dev directory

func (*UdevDevice) GetPropertyValue

func (ud *UdevDevice) GetPropertyValue(key string) string

GetPropertyValue retrieves the value of a device property

func (*UdevDevice) GetSysattrValue

func (ud *UdevDevice) GetSysattrValue(sysattr string) string

GetSysattrValue retrieves the content of a sys attribute file returns an empty string if there is no sys attribute value. The retrieved value is cached in the device. Repeated calls will return the same value and not open the attribute again.

func (*UdevDevice) GetSyspath

func (device *UdevDevice) GetSyspath() string

GetSyspath returns syspath of a disk using syspath we can fell details in diskInfo struct using udev probe

func (*UdevDevice) GetUid

func (device *UdevDevice) GetUid() string

GetUid returns unique id for the disk block device

func (*UdevDevice) IsDisk

func (device *UdevDevice) IsDisk() bool

IsDisk returns true if device is a disk

func (*UdevDevice) IsParitition added in v0.3.0

func (device *UdevDevice) IsParitition() bool

IsPartition return true if device is a partition

func (*UdevDevice) UdevDeviceUnref

func (ud *UdevDevice) UdevDeviceUnref()

UdevDeviceUnref frees udev_device structure.

type UdevDiskDetails

type UdevDiskDetails struct {
	WWN            string
	Model          string   // Model is Model of disk.
	Serial         string   // Serial is Serial of a disk.
	Vendor         string   // Vendor is Vendor of a disk.
	Path           string   // Path is Path of a disk.
	ByIdDevLinks   []string // ByIdDevLinks contains by-id devlinks
	ByPathDevLinks []string // ByPathDevLinks contains by-path devlinks
	DiskType       string   // DeviceType can be disk, partition
	// IDType is used for uuid generation using the legacy algorithm
	IDType     string
	FileSystem string // FileSystem on the disk
	// Partitiontype on the disk/device
	PartitionType string
	// PartitionNumber is the partition number, for /dev/sdb1, partition number is 1
	PartitionNumber uint8
	// PartitionTableType is the type of the partition table (dos/gpt)
	PartitionTableType string
	// DMPath is the /dev/mapper path if this is a dm device
	DMPath string
}

UdevDiskDetails struct contain different attribute of disk.

type UdevEnumerate

type UdevEnumerate struct {
	// contains filtered or unexported fields
}

UdevEnumerate wraps a libudev udev_enumerate object

func (*UdevEnumerate) AddSubsystemFilter

func (ue *UdevEnumerate) AddSubsystemFilter(subSystem string) error

AddSubsystemFilter adds filter in UdeviceMon struct. This filter is efficiently executed inside kernel, and libudev subscribers will usually not be woken up for devices which do not match.

func (*UdevEnumerate) ListEntry

func (ue *UdevEnumerate) ListEntry() *UdevListEntry

ListEntry returns UdevListEntry struct from which we can get device.

func (*UdevEnumerate) ScanDevices

func (ue *UdevEnumerate) ScanDevices() error

ScanDevices scan devices in system and returns list of devices present in system

func (*UdevEnumerate) UnrefUdevEnumerate

func (ue *UdevEnumerate) UnrefUdevEnumerate()

UnrefUdevEnumerate frees udev_enumerate structure.

type UdevListEntry

type UdevListEntry struct {
	// contains filtered or unexported fields
}

UdevListEntry wraps a libudev udev_list_entry object

func (*UdevListEntry) GetName

func (le *UdevListEntry) GetName() string

GetName return Udevice syspath.

func (*UdevListEntry) GetNextEntry

func (le *UdevListEntry) GetNextEntry() *UdevListEntry

GetNextEntry returns UdevListEntry struct if next device is present else it returns nil pointer.

type UdevMonitor

type UdevMonitor struct {
	// contains filtered or unexported fields
}

UdevMonitor wraps a libudev monitor device object

func (*UdevMonitor) AddSubsystemFilter

func (um *UdevMonitor) AddSubsystemFilter(key string) error

AddSubsystemFilter adds subsystem filter in UdevMonitor struct. This filter is efficiently executed inside kernel, and libudev subscribers will usually not be woken up for devices which do not match.

func (*UdevMonitor) EnableReceiving

func (um *UdevMonitor) EnableReceiving() error

EnableReceiving binds udev_monitor socket to event source.

func (*UdevMonitor) GetFd

func (um *UdevMonitor) GetFd() (int, error)

GetFd retrieves socket file descriptor associated with monitor.

func (*UdevMonitor) ReceiveDevice

func (um *UdevMonitor) ReceiveDevice() (*UdevDevice, error)

ReceiveDevice receives data from udev monitor socket, allocate a new udev device, fill in received data, and return Udevice struct.

func (*UdevMonitor) UdevMonitorUnref

func (um *UdevMonitor) UdevMonitorUnref()

UdevMonitorUnref frees udev monitor structure.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL