Description

The update_drv command informs the system about attribute changes to an installed device driver. It can be used to re-read the driver.conf(4) file,
or to add, modify, or delete a driver's minor node permissions or aliases.

Without options, update_drv reloads the driver.conf file.

Upon successfully updating the aliases, the driver binding takes effect upon reconfig boot or hotplug of the device.

Upon successfully updating the permissions, only the new driver minor nodes get created with the modified set of file permissions. Existing driver minor nodes do not get modified.

Options

The following options are supported:

-a

Add a permission, aliases, privilege or policy entry.

With the -a option specified, a permission entry (using the -m option), or a driver's aliases entry (using the -i option), a device privilege (using the -P option) or a a device policy (using the -p option),
can be added or updated. If a matching minor node permissions entry is encountered (having the same driver name and the minor node), it is replaced. If a matching aliases entry is encountered (having a different driver name and the same alias), an error is reported.

The -a and -d options are mutually exclusive.

-bbasedir

Installs or modifies the driver on the system with a root directory of basedir rather than installing on the system executing update_drv.

Note –

The root file system of any non-global zones must not be referenced with the -b option. Doing so might damage the global zone's file system, might compromise the security of the global zone, and might damage the non-global zone's file system. See zones(5).

-d

Delete a permission, aliases, privilege or policy entry.

The -mpermission, -iidentify-name, -Pprivilege or the -ppolicy option needs to be specified with the -d option.

The -d and -a options are mutually exclusive.

If the entry doesn't exist update_drv returns an error.

-f

Force the system to reread the driver.conf file even if the driver module cannot be unloaded. See NOTES section for details.

-i 'identify-name'

A white-space separated list of aliases for the driver. If -a or -d option is not specified then this option is ignored. The identify-name string is mandatory. If all aliases need to be removed, rem_drv(1M) is recommended.

-m 'permission'

Specify a white-space separated list of file system permissions for the device node of the device driver. If -a or -d option is not specified then, this option is ignored. The permission string is mandatory.

-p 'policy'

With the -a option, policy is a white-space separated list of complete device policies. For the -d option, policy is a white space separated list of minor device specifications. The minor device specifications are matched exactly against the entries
in /etc/security/device_policy, that is., no wildcard matching is performed.

-P 'privilege'

With the -a option, privilege is a comma separated list of additional driver privileges. For the -d option, privilege is a single privilege. The privileges are added to or removed from the /etc/security/extra_privs file.

-v

Verbose.

Examples

Example 1 Adding or Modifying an Existing Minor Permissions Entry

The following command adds or modifies the exisitng minor permissions entry of the clone driver:

example# update_drv -a -m 'llc1 777 joe staff' clone

Example 2 Removing All Minor Permissions Entries

The following command removes all minor permission entries of the usbprn driver, the USB printer driver:

example# update_drv -d -m '* 0666 root sys' usbprn

Example 3 Adding a Driver Aliases Entry

The following command adds a driver aliases entry of the ugen driver with the identity string of usb459,20:

example# update_drv -a -i '"usb459,20"' ugen

Example 4 Re-reading the driver.conf File For the ohci Driver

The following command re-reads the driver.conf(4) file.

example# update_drv ohci

Example 5 Requiring a Self-defined Privilege to Open a tcp Socket

The following command requires a self-defined privilege to open a tcp socket:

See Also

Notes

If -a or -d options are specified, update_drv does not re-read the driver.conf file.

A forced update of the driver.conf file reloads the driver.conf file without reloading the driver binary module. In this case, devices which can not be detached reference driver global properties from the old driver.conf file,
while the remaining driver instances reference global properties in the new driver.conf file.

It is possible to add an alias , which changes the driver binding of a device already being managed by a different driver. A force update with the -a option tries to bind to the new driver and report error if it cannot. If you specify more than one of the -m, -i, -P or -p options, a force flag tries to modify aliases or permissions. This is done even if the other operation fails and vice-versa. A force update with the -d option tries to delete entries and report the error if it cannot.