devices

package
v0.0.0-...-bf3866f Latest Latest
Warning

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

Go to latest
Published: Aug 9, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Wildcard = -1
)

Variables

View Source
var ErrNotADevice = errors.New("not a device node")

ErrNotADevice denotes that a file is not a valid linux device.

Functions

This section is empty.

Types

type Device

type Device struct {
	Rule

	// Path to the device.
	Path string `json:"path"`

	// FileMode permission bits for the device.
	FileMode os.FileMode `json:"file_mode"`

	// Uid of the device.
	Uid uint32 `json:"uid"`

	// Gid of the device.
	Gid uint32 `json:"gid"`
}

func DeviceFromPath

func DeviceFromPath(path, permissions string) (*Device, error)

DeviceFromPath takes the path to a device and its cgroup_permissions (which cannot be easily queried) to look up the information about a linux device and returns that information as a Device struct.

func GetDevices

func GetDevices(path string) ([]*Device, error)

GetDevices recursively traverses a directory specified by path and returns all devices found there.

func HostDevices

func HostDevices() ([]*Device, error)

HostDevices returns all devices that can be found under /dev directory.

type Permissions

type Permissions string

Permissions is a cgroupv1-style string to represent device access. It has to be a string for backward compatibility reasons, hence why it has methods to do set operations.

func (Permissions) Difference

func (p Permissions) Difference(o Permissions) Permissions

Difference returns the set difference of the two sets of Permissions. In set notation, A.Difference(B) gives you A\B.

func (Permissions) Intersection

func (p Permissions) Intersection(o Permissions) Permissions

Intersection computes the intersection of the two sets of Permissions.

func (Permissions) IsEmpty

func (p Permissions) IsEmpty() bool

IsEmpty returns whether the set of permissions in a Permissions is empty.

func (Permissions) IsValid

func (p Permissions) IsValid() bool

IsValid returns whether the set of permissions is a subset of valid permissions (namely, {r,w,m}).

func (Permissions) Union

func (p Permissions) Union(o Permissions) Permissions

Union returns the union of the two sets of Permissions.

type Rule

type Rule struct {
	// Type of device ('c' for char, 'b' for block). If set to 'a', this rule
	// acts as a wildcard and all fields other than Allow are ignored.
	Type Type `json:"type"`

	// Major is the device's major number.
	Major int64 `json:"major"`

	// Minor is the device's minor number.
	Minor int64 `json:"minor"`

	// Permissions is the set of permissions that this rule applies to (in the
	// cgroupv1 format -- any combination of "rwm").
	Permissions Permissions `json:"permissions"`

	// Allow specifies whether this rule is allowed.
	Allow bool `json:"allow"`
}

func (*Rule) CgroupString

func (d *Rule) CgroupString() string

func (*Rule) Mkdev

func (d *Rule) Mkdev() (uint64, error)

type Type

type Type rune
const (
	WildcardDevice Type = 'a'
	BlockDevice    Type = 'b'
	CharDevice     Type = 'c' // or 'u'
	FifoDevice     Type = 'p'
)

func (Type) CanCgroup

func (t Type) CanCgroup() bool

func (Type) CanMknod

func (t Type) CanMknod() bool

func (Type) IsValid

func (t Type) IsValid() bool

Jump to

Keyboard shortcuts

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