/usr/src/linux-headers-5.15.0-181/include/uapi/linux
NameSizeModeActions
android/-0755rm
byteorder/-0755rm
caif/-0755rm
can/-0755rm
cifs/-0755rm
dvb/-0755rm
genwqe/-0755rm
hdlc/-0755rm
hsi/-0755rm
iio/-0755rm
isdn/-0755rm
misc/-0755rm
mmc/-0755rm
netfilter/-0755rm
netfilter_arp/-0755rm
netfilter_bridge/-0755rm
netfilter_ipv4/-0755rm
netfilter_ipv6/-0755rm
nfsd/-0755rm
raid/-0755rm
sched/-0755rm
spi/-0755rm
sunrpc/-0755rm
surface_aggregator/-0755rm
tc_act/-0755rm
tc_ematch/-0755rm
usb/-0755rm
a.out.h69590644editdlrm
acct.h40130644editdlrm
acrn.h167050644editdlrm
adb.h11550644editdlrm
adfs_fs.h10080644editdlrm
affs_hardblocks.h15780644editdlrm
agpgart.h40010644editdlrm
aio_abi.h33980644editdlrm
am437x-vpfe.h36810644editdlrm
apm_bios.h36980644editdlrm
arcfb.h2130644editdlrm
arm_sdei.h27660644editdlrm
aspeed-lpc-ctrl.h17950644editdlrm
aspeed-p2a-ctrl.h19210644editdlrm
atalk.h10380644editdlrm
atm.h79370644editdlrm
atmapi.h9520644editdlrm
atmarp.h12960644editdlrm
atmbr2684.h32710644editdlrm
atmclip.h5760644editdlrm
atmdev.h76990644editdlrm
atmioc.h16470644editdlrm
atmlec.h23810644editdlrm
atmmpc.h42260644editdlrm
atmppp.h6390644editdlrm
atmsap.h49700644editdlrm
atmsvc.h18530644editdlrm
atm_eni.h6480644editdlrm
atm_he.h4060644editdlrm
atm_idt77105.h9550644editdlrm
atm_nicstar.h12780644editdlrm
atm_tcp.h16370644editdlrm
atm_zatm.h15400644editdlrm
audit.h212670644editdlrm
aufs_type.h126410644editdlrm
auto_dev-ioctl.h49960644editdlrm
auto_fs.h64500644editdlrm
auto_fs4.h4660644editdlrm
auxvec.h16120644editdlrm
ax25.h28240644editdlrm
batadv_packet.h203600644editdlrm
batman_adv.h169020644editdlrm
baycom.h8830644editdlrm
bcache.h99100644editdlrm
bcm933xx_hcs.h4190644editdlrm
bfs_fs.h19050644editdlrm
binfmts.h7910644editdlrm
blkpg.h9530644editdlrm
blktrace_api.h47160644editdlrm
blkzoned.h65080644editdlrm
bpf.h2350840644editdlrm
bpfilter.h4800644editdlrm
bpf_common.h13820644editdlrm
bpf_perf_event.h5440644editdlrm
bpqether.h9810644editdlrm
bsg.h25090644editdlrm
bt-bmc.h5870644editdlrm
btf.h48110644editdlrm
btrfs.h309040644editdlrm
btrfs_tree.h273920644editdlrm
can.h92680644editdlrm
capability.h135470644editdlrm
capi.h31570644editdlrm
cciss_defs.h32810644editdlrm
cciss_ioctl.h27900644editdlrm
ccs.h7670644editdlrm
cdrom.h289490644editdlrm
cec-funcs.h534530644editdlrm
cec.h413340644editdlrm
cfm_bridge.h14660644editdlrm
cgroupstats.h22190644editdlrm
chio.h53040644editdlrm
close_range.h3920644editdlrm
cm4000_cs.h18210644editdlrm
cn_proc.h34710644editdlrm
coda.h183930644editdlrm
coff.h125640644editdlrm
connector.h22680644editdlrm
const.h10060644editdlrm
coresight-stm.h7470644editdlrm
cramfs_fs.h35700644editdlrm
cryptouser.h53360644editdlrm
cuda.h9200644editdlrm
cxl_mem.h64890644editdlrm
cyclades.h9840644editdlrm
cycx_cfm.h29900644editdlrm
dcbnl.h252920644editdlrm
dccp.h64470644editdlrm
devlink.h202070644editdlrm
dlm.h25680644editdlrm
dlmconstants.h50800644editdlrm
dlm_device.h25990644editdlrm
dlm_netlink.h11590644editdlrm
dlm_plock.h9090644editdlrm
dm-ioctl.h116020644editdlrm
dm-log-userspace.h151910644editdlrm
dma-buf.h37790644editdlrm
dma-heap.h14090644editdlrm
dns_resolver.h39040644editdlrm
dqblk_xfs.h93880644editdlrm
edd.h56190644editdlrm
efs_fs_sb.h22270644editdlrm
elf-em.h25860644editdlrm
elf-fdpic.h11390644editdlrm
elf.h141800644editdlrm
errno.h230644editdlrm
errqueue.h20660644editdlrm
erspan.h10740644editdlrm
ethtool.h825540644editdlrm
ethtool_netlink.h230880644editdlrm
eventpoll.h30560644editdlrm
f2fs.h33160644editdlrm
fadvise.h8420644editdlrm
falloc.h35990644editdlrm
fanotify.h74950644editdlrm
fb.h165180644editdlrm
fcntl.h42660644editdlrm
fd.h121660644editdlrm
fdreg.h53640644editdlrm
fib_rules.h20360644editdlrm
fiemap.h27900644editdlrm
filter.h22650644editdlrm
firewire-cdev.h442400644editdlrm
firewire-constants.h32310644editdlrm
fou.h9090644editdlrm
fpga-dfl.h87430644editdlrm
fs.h124110644editdlrm
fscrypt.h66380644editdlrm
fsi.h22700644editdlrm
fsl_hypervisor.h73160644editdlrm
fsl_mc.h7490644editdlrm
fsmap.h43850644editdlrm
fsverity.h32930644editdlrm
fuse.h230480644editdlrm
futex.h51450644editdlrm
gameport.h9120644editdlrm
genetlink.h21900644editdlrm
gen_stats.h15260644editdlrm
gfs2_ondisk.h147690644editdlrm
gpio.h197830644editdlrm
gsmmux.h11440644editdlrm
gtp.h7310644editdlrm
hash_info.h9860644editdlrm
hdlc.h6520644editdlrm
hdlcdrv.h29230644editdlrm
hdreg.h229450644editdlrm
hid.h19160644editdlrm
hiddev.h63600644editdlrm
hidraw.h20080644editdlrm
hpet.h7850644editdlrm
hsr_netlink.h11010644editdlrm
hw_breakpoint.h7570644editdlrm
hyperv.h105830644editdlrm
i2c-dev.h19310644editdlrm
i2c.h69050644editdlrm
i2o-dev.h116460644editdlrm
i8k.h15280644editdlrm
icmp.h48000644editdlrm
icmpv6.h42840644editdlrm
idxd.h76240644editdlrm
if.h110150644editdlrm
ife.h3510644editdlrm
if_addr.h19120644editdlrm
if_addrlabel.h7210644editdlrm
if_alg.h15660644editdlrm
if_arcnet.h37170644editdlrm
if_arp.h66040644editdlrm
if_bonding.h51450644editdlrm
if_bridge.h191210644editdlrm
if_cablemodem.h9860644editdlrm
if_eql.h13640644editdlrm
if_ether.h84570644editdlrm
if_fc.h17380644editdlrm
if_fddi.h43840644editdlrm
if_hippi.h42350644editdlrm
if_infiniband.h12450644editdlrm
if_link.h317600644editdlrm
if_ltalk.h2250644editdlrm
if_macsec.h64900644editdlrm
if_packet.h81470644editdlrm
if_phonet.h4390644editdlrm
if_plip.h6600644editdlrm
if_ppp.h290644editdlrm
if_pppol2tp.h33180644editdlrm
if_pppox.h48040644editdlrm
if_slip.h8720644editdlrm
if_team.h26150644editdlrm
if_tun.h41130644editdlrm
if_tunnel.h48580644editdlrm
if_vlan.h18460644editdlrm
if_x25.h8810644editdlrm
if_xdp.h30110644editdlrm
igmp.h30790644editdlrm
ila.h12610644editdlrm
in.h108970644editdlrm
in6.h75930644editdlrm
inet_diag.h50320644editdlrm
inotify.h33070644editdlrm
input-event-codes.h288940644editdlrm
input.h160300644editdlrm
in_route.h9360644editdlrm
ioam6.h23990644editdlrm
ioam6_genl.h9600644editdlrm
ioam6_iptunnel.h4510644editdlrm
ioctl.h1630644editdlrm
iommu.h120310644editdlrm
ioprio.h14710644editdlrm
io_uring.h97950644editdlrm
ip.h48280644editdlrm
ip6_tunnel.h19530644editdlrm
ipc.h21230644editdlrm
ipmi.h151120644editdlrm
ipmi_bmc.h5030644editdlrm
ipmi_msgdefs.h34300644editdlrm
ipsec.h9470644editdlrm
ipu-isys.h4810644editdlrm
ipu-psys.h36630644editdlrm
ipv6.h43410644editdlrm
ipv6_route.h19230644editdlrm
ip_vs.h141350644editdlrm
irqnr.h1040644editdlrm
iso_fs.h64850644editdlrm
isst_if.h54040644editdlrm
ivtv.h30630644editdlrm
ivtvfb.h12410644editdlrm
jffs2.h68150644editdlrm
joystick.h34490644editdlrm
kcm.h8220644editdlrm
kcmp.h5370644editdlrm
kcov.h19590644editdlrm
kd.h63110644editdlrm
kdev_t.h4410644editdlrm
kernel-page-flags.h9150644editdlrm
kernel.h2090644editdlrm
kernelcapi.h10340644editdlrm
kexec.h19700644editdlrm
keyboard.h134740644editdlrm
keyctl.h60100644editdlrm
kfd_ioctl.h241510644editdlrm
kvm.h607960644editdlrm
kvm_para.h10160644editdlrm
l2tp.h57880644editdlrm
landlock.h49150644editdlrm
libc-compat.h83040644editdlrm
limits.h9470644editdlrm
lirc.h81440644editdlrm
llc.h31790644editdlrm
loop.h35120644editdlrm
lp.h42050644editdlrm
lwtunnel.h22380644editdlrm
magic.h38010644editdlrm
major.h46570644editdlrm
map_to_7segment.h66080644editdlrm
matroxfb.h14640644editdlrm
max2175.h10350644editdlrm
mctp.h7360644editdlrm
mdio.h172830644editdlrm
media-bus-format.h69090644editdlrm
media.h132230644editdlrm
mei.h34750644editdlrm
membarrier.h93770644editdlrm
memfd.h13390644editdlrm
mempolicy.h25830644editdlrm
meye.h25290644editdlrm
mii.h95110644editdlrm
minix_fs.h21220644editdlrm
mman.h15990644editdlrm
mmtimer.h21170644editdlrm
module.h2700644editdlrm
mount.h51070644editdlrm
mpls.h23170644editdlrm
mpls_iptunnel.h7760644editdlrm
mptcp.h57500644editdlrm
mqueue.h22010644editdlrm
mroute.h59370644editdlrm
mroute6.h49450644editdlrm
mrp_bridge.h17180644editdlrm
msdos_fs.h67460644editdlrm
msg.h34010644editdlrm
mtio.h81750644editdlrm
nbd-netlink.h24230644editdlrm
nbd.h30390644editdlrm
ncsi.h48280644editdlrm
ndctl.h67930644editdlrm
neighbour.h51240644editdlrm
net.h21000644editdlrm
netconf.h6290644editdlrm
netdevice.h22680644editdlrm
netfilter.h17800644editdlrm
netfilter_arp.h4710644editdlrm
netfilter_bridge.h12090644editdlrm
netfilter_ipv4.h15480644editdlrm
netfilter_ipv6.h14430644editdlrm
netlink.h117170644editdlrm
netlink_diag.h15500644editdlrm
netrom.h8070644editdlrm
net_dropmon.h28860644editdlrm
net_namespace.h7300644editdlrm
net_tstamp.h55710644editdlrm
nexthop.h28350644editdlrm
nfc.h112360644editdlrm
nfs.h44810644editdlrm
nfs2.h14680644editdlrm
nfs3.h24680644editdlrm
nfs4.h65060644editdlrm
nfs4_mount.h19530644editdlrm
nfsacl.h7330644editdlrm
nfs_fs.h16560644editdlrm
nfs_idmap.h22580644editdlrm
nfs_mount.h21420644editdlrm
nilfs2_api.h75650644editdlrm
nilfs2_ondisk.h180530644editdlrm
nitro_enclaves.h131670644editdlrm
nl80211-vnd-intel.h29370644editdlrm
nl80211.h3140080644editdlrm
nsfs.h6390644editdlrm
nubus.h82060644editdlrm
nvme_ioctl.h16760644editdlrm
nvram.h5470644editdlrm
omap3isp.h214230644editdlrm
omapfb.h59400644editdlrm
oom.h5260644editdlrm
openat2.h14650644editdlrm
openvswitch.h406950644editdlrm
packet_diag.h16720644editdlrm
param.h1410644editdlrm
parport.h36590644editdlrm
patchkey.h9650644editdlrm
pci.h13950644editdlrm
pcitest.h8780644editdlrm
pci_regs.h586560644editdlrm
perf_event.h397810644editdlrm
personality.h21120644editdlrm
pfkeyv2.h105690644editdlrm
pg.h24090644editdlrm
phantom.h16540644editdlrm
phonet.h46400644editdlrm
pidfd.h2710644editdlrm
pktcdvd.h27020644editdlrm
pkt_cls.h181710644editdlrm
pkt_sched.h301060644editdlrm
pmu.h54590644editdlrm
poll.h220644editdlrm
posix_acl.h12540644editdlrm
posix_acl_xattr.h11150644editdlrm
posix_types.h10980644editdlrm
ppdev.h33000644editdlrm
ppp-comp.h25420644editdlrm
ppp-ioctl.h57630644editdlrm
ppp_defs.h55720644editdlrm
pps.h47340644editdlrm
pr.h10880644editdlrm
prctl.h93950644editdlrm
psample.h22710644editdlrm
psci.h43430644editdlrm
psp-sev.h40530644editdlrm
ptp_clock.h74560644editdlrm
ptrace.h44260644editdlrm
qemu_fw_cfg.h24690644editdlrm
qnx4_fs.h23280644editdlrm
qnxtypes.h6240644editdlrm
qrtr.h8780644editdlrm
quota.h63060644editdlrm
radeonfb.h3600644editdlrm
random.h14300644editdlrm
rds.h111680644editdlrm
reboot.h13580644editdlrm
reiserfs_fs.h7750644editdlrm
reiserfs_xattr.h5330644editdlrm
remoteproc_cdev.h11120644editdlrm
resource.h23880644editdlrm
rfkill.h61180644editdlrm
rio_cm_cdev.h32480644editdlrm
rio_mport_cdev.h93300644editdlrm
rkisp1-config.h313770644editdlrm
romfs_fs.h12380644editdlrm
rose.h22320644editdlrm
route.h23920644editdlrm
rpl.h8240644editdlrm
rpl_iptunnel.h4340644editdlrm
rpmsg.h8130644editdlrm
rpmsg_types.h3030644editdlrm
rseq.h47210644editdlrm
rtc.h46100644editdlrm
rtnetlink.h207840644editdlrm
rxrpc.h49370644editdlrm
scc.h46390644editdlrm
sched.h62810644editdlrm
scif_ioctl.h63820644editdlrm
screen_info.h24940644editdlrm
sctp.h360990644editdlrm
seccomp.h57740644editdlrm
securebits.h27190644editdlrm
sed-opal.h37770644editdlrm
seg6.h11800644editdlrm
seg6_genl.h5990644editdlrm
seg6_hmac.h4330644editdlrm
seg6_iptunnel.h9940644editdlrm
seg6_local.h33380644editdlrm
selinux_netlink.h12210644editdlrm
sem.h30940644editdlrm
serial.h38250644editdlrm
serial_core.h61290644editdlrm
serial_reg.h155520644editdlrm
serio.h21140644editdlrm
shm.h38350644editdlrm
signal.h4030644editdlrm
signalfd.h12480644editdlrm
smc.h80190644editdlrm
smc_diag.h28500644editdlrm
smiapp.h10580644editdlrm
snmp.h139500644editdlrm
socket.h9550644editdlrm
sockios.h68460644editdlrm
sock_diag.h13160644editdlrm
sonet.h23050644editdlrm
sonypi.h53240644editdlrm
sound.h12520644editdlrm
soundcard.h461700644editdlrm
stat.h67670644editdlrm
stddef.h15770644editdlrm
stm.h12900644editdlrm
string.h2960644editdlrm
suspend_ioctls.h14310644editdlrm
swab.h70160644editdlrm
switchtec_ioctl.h52720644editdlrm
synclink.h90000644editdlrm
sync_file.h28990644editdlrm
sysctl.h259880644editdlrm
sysinfo.h10490644editdlrm
target_core_user.h45570644editdlrm
taskstats.h72900644editdlrm
tcp.h119490644editdlrm
tcp_metrics.h15490644editdlrm
tee.h135920644editdlrm
termios.h1720644editdlrm
thermal.h30880644editdlrm
time.h17930644editdlrm
timerfd.h9510644editdlrm
times.h2780644editdlrm
timex.h78840644editdlrm
time_types.h12820644editdlrm
tiocl.h17290644editdlrm
tipc.h88050644editdlrm
tipc_config.h148380644editdlrm
tipc_netlink.h93950644editdlrm
tipc_sockets_diag.h4830644editdlrm
tls.h49180644editdlrm
toshiba.h19450644editdlrm
tty.h16000644editdlrm
tty_flags.h45530644editdlrm
types.h17380644editdlrm
udf_fs_i.h6970644editdlrm
udmabuf.h6580644editdlrm
udp.h17030644editdlrm
uhid.h46550644editdlrm
uinput.h92760644editdlrm
uio.h7810644editdlrm
uleds.h8130644editdlrm
ultrasound.h45620644editdlrm
um_timetravel.h39760644editdlrm
un.h3840644editdlrm
unistd.h2200644editdlrm
unix_diag.h13280644editdlrm
usbdevice_fs.h83740644editdlrm
usbip.h6550644editdlrm
userfaultfd.h90890644editdlrm
userio.h15160644editdlrm
utime.h2230644editdlrm
utsname.h6840644editdlrm
uuid.h13710644editdlrm
uvcvideo.h25810644editdlrm
v4l2-common.h42030644editdlrm
v4l2-controls.h864530644editdlrm
v4l2-dv-timings.h315620644editdlrm
v4l2-mediabus.h54610644editdlrm
v4l2-subdev.h77820644editdlrm
vboxguest.h93680644editdlrm
vbox_err.h72570644editdlrm
vbox_vmmdev_types.h115910644editdlrm
vdpa.h11830644editdlrm
vduse.h83060644editdlrm
veth.h2240644editdlrm
vfio.h538090644editdlrm
vfio_ccw.h12570644editdlrm
vfio_zdev.h25420644editdlrm
vhost.h64180644editdlrm
vhost_types.h40240644editdlrm
videodev2.h961870644editdlrm
virtio_9p.h20530644editdlrm
virtio_balloon.h52790644editdlrm
virtio_blk.h68880644editdlrm
virtio_bt.h7870644editdlrm
virtio_config.h40630644editdlrm
virtio_console.h31710644editdlrm
virtio_crypto.h138870644editdlrm
virtio_fs.h5880644editdlrm
virtio_gpio.h10390644editdlrm
virtio_gpu.h110530644editdlrm
virtio_i2c.h10040644editdlrm
virtio_ids.h43030644editdlrm
virtio_input.h25150644editdlrm
virtio_iommu.h37930644editdlrm
virtio_mem.h69550644editdlrm
virtio_mmio.h49690644editdlrm
virtio_net.h138310644editdlrm
virtio_pci.h74060644editdlrm
virtio_pcidev.h24620644editdlrm
virtio_pmem.h6510644editdlrm
virtio_ring.h86060644editdlrm
virtio_rng.h2650644editdlrm
virtio_scmi.h6520644editdlrm
virtio_scsi.h60850644editdlrm
virtio_snd.h93040644editdlrm
virtio_types.h21680644editdlrm
virtio_vsock.h33630644editdlrm
vmcore.h4700644editdlrm
vm_sockets.h66090644editdlrm
vm_sockets_diag.h9780644editdlrm
vsockmon.h18950644editdlrm
vt.h30740644editdlrm
vtpm_proxy.h17340644editdlrm
wait.h6970644editdlrm
watchdog.h23500644editdlrm
watch_queue.h35050644editdlrm
wireguard.h77480644editdlrm
wireless.h428040644editdlrm
wmi.h17180644editdlrm
wwan.h3100644editdlrm
x25.h35620644editdlrm
xattr.h30380644editdlrm
xdp_diag.h14680644editdlrm
xfrm.h124330644editdlrm
xilinx-v4l2-controls.h29760644editdlrm
zorro.h32660644editdlrm
zorro_ids.h300650644editdlrm
Edit: /usr/src/linux-headers-5.15.0-181/include/uapi/linux/ipmi.h (15112B)
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * ipmi.h * * MontaVista IPMI interface * * Author: MontaVista Software, Inc. * Corey Minyard * source@mvista.com * * Copyright 2002 MontaVista Software Inc. * */ #ifndef _UAPI__LINUX_IPMI_H #define _UAPI__LINUX_IPMI_H #include #include /* * This file describes an interface to an IPMI driver. You have to * have a fairly good understanding of IPMI to use this, so go read * the specs first before actually trying to do anything. * * With that said, this driver provides a multi-user interface to the * IPMI driver, and it allows multiple IPMI physical interfaces below * the driver. The physical interfaces bind as a lower layer on the * driver. They appear as interfaces to the application using this * interface. * * Multi-user means that multiple applications may use the driver, * send commands, receive responses, etc. The driver keeps track of * commands the user sends and tracks the responses. The responses * will go back to the application that send the command. If the * response doesn't come back in time, the driver will return a * timeout error response to the application. Asynchronous events * from the BMC event queue will go to all users bound to the driver. * The incoming event queue in the BMC will automatically be flushed * if it becomes full and it is queried once a second to see if * anything is in it. Incoming commands to the driver will get * delivered as commands. */ /* * This is an overlay for all the address types, so it's easy to * determine the actual address type. This is kind of like addresses * work for sockets. */ #define IPMI_MAX_ADDR_SIZE 32 struct ipmi_addr { /* Try to take these from the "Channel Medium Type" table in section 6.5 of the IPMI 1.5 manual. */ int addr_type; short channel; char data[IPMI_MAX_ADDR_SIZE]; }; /* * When the address is not used, the type will be set to this value. * The channel is the BMC's channel number for the channel (usually * 0), or IPMC_BMC_CHANNEL if communicating directly with the BMC. */ #define IPMI_SYSTEM_INTERFACE_ADDR_TYPE 0x0c struct ipmi_system_interface_addr { int addr_type; short channel; unsigned char lun; }; /* An IPMB Address. */ #define IPMI_IPMB_ADDR_TYPE 0x01 /* Used for broadcast get device id as described in section 17.9 of the IPMI 1.5 manual. */ #define IPMI_IPMB_BROADCAST_ADDR_TYPE 0x41 struct ipmi_ipmb_addr { int addr_type; short channel; unsigned char slave_addr; unsigned char lun; }; /* * A LAN Address. This is an address to/from a LAN interface bridged * by the BMC, not an address actually out on the LAN. * * A conscious decision was made here to deviate slightly from the IPMI * spec. We do not use rqSWID and rsSWID like it shows in the * message. Instead, we use remote_SWID and local_SWID. This means * that any message (a request or response) from another device will * always have exactly the same address. If you didn't do this, * requests and responses from the same device would have different * addresses, and that's not too cool. * * In this address, the remote_SWID is always the SWID the remote * message came from, or the SWID we are sending the message to. * local_SWID is always our SWID. Note that having our SWID in the * message is a little weird, but this is required. */ #define IPMI_LAN_ADDR_TYPE 0x04 struct ipmi_lan_addr { int addr_type; short channel; unsigned char privilege; unsigned char session_handle; unsigned char remote_SWID; unsigned char local_SWID; unsigned char lun; }; /* * Channel for talking directly with the BMC. When using this * channel, This is for the system interface address type only. FIXME * - is this right, or should we use -1? */ #define IPMI_BMC_CHANNEL 0xf #define IPMI_NUM_CHANNELS 0x10 /* * Used to signify an "all channel" bitmask. This is more than the * actual number of channels because this is used in userland and * will cover us if the number of channels is extended. */ #define IPMI_CHAN_ALL (~0) /* * A raw IPMI message without any addressing. This covers both * commands and responses. The completion code is always the first * byte of data in the response (as the spec shows the messages laid * out). */ struct ipmi_msg { unsigned char netfn; unsigned char cmd; unsigned short data_len; unsigned char __user *data; }; struct kernel_ipmi_msg { unsigned char netfn; unsigned char cmd; unsigned short data_len; unsigned char *data; }; /* * Various defines that are useful for IPMI applications. */ #define IPMI_INVALID_CMD_COMPLETION_CODE 0xC1 #define IPMI_TIMEOUT_COMPLETION_CODE 0xC3 #define IPMI_UNKNOWN_ERR_COMPLETION_CODE 0xff /* * Receive types for messages coming from the receive interface. This * is used for the receive in-kernel interface and in the receive * IOCTL. * * The "IPMI_RESPONSE_RESPNOSE_TYPE" is a little strange sounding, but * it allows you to get the message results when you send a response * message. */ #define IPMI_RESPONSE_RECV_TYPE 1 /* A response to a command */ #define IPMI_ASYNC_EVENT_RECV_TYPE 2 /* Something from the event queue */ #define IPMI_CMD_RECV_TYPE 3 /* A command from somewhere else */ #define IPMI_RESPONSE_RESPONSE_TYPE 4 /* The response for a sent response, giving any error status for sending the response. When you send a response message, this will be returned. */ #define IPMI_OEM_RECV_TYPE 5 /* The response for OEM Channels */ /* Note that async events and received commands do not have a completion code as the first byte of the incoming data, unlike a response. */ /* * Modes for ipmi_set_maint_mode() and the userland IOCTL. The AUTO * setting is the default and means it will be set on certain * commands. Hard setting it on and off will override automatic * operation. */ #define IPMI_MAINTENANCE_MODE_AUTO 0 #define IPMI_MAINTENANCE_MODE_OFF 1 #define IPMI_MAINTENANCE_MODE_ON 2 /* * The userland interface */ /* * The userland interface for the IPMI driver is a standard character * device, with each instance of an interface registered as a minor * number under the major character device. * * The read and write calls do not work, to get messages in and out * requires ioctl calls because of the complexity of the data. select * and poll do work, so you can wait for input using the file * descriptor, you just can use read to get it. * * In general, you send a command down to the interface and receive * responses back. You can use the msgid value to correlate commands * and responses, the driver will take care of figuring out which * incoming messages are for which command and find the proper msgid * value to report. You will only receive reponses for commands you * send. Asynchronous events, however, go to all open users, so you * must be ready to handle these (or ignore them if you don't care). * * The address type depends upon the channel type. When talking * directly to the BMC (IPMC_BMC_CHANNEL), the address is ignored * (IPMI_UNUSED_ADDR_TYPE). When talking to an IPMB channel, you must * supply a valid IPMB address with the addr_type set properly. * * When talking to normal channels, the driver takes care of the * details of formatting and sending messages on that channel. You do * not, for instance, have to format a send command, you just send * whatever command you want to the channel, the driver will create * the send command, automatically issue receive command and get even * commands, and pass those up to the proper user. */ /* The magic IOCTL value for this interface. */ #define IPMI_IOC_MAGIC 'i' /* Messages sent to the interface are this format. */ struct ipmi_req { unsigned char __user *addr; /* Address to send the message to. */ unsigned int addr_len; long msgid; /* The sequence number for the message. This exact value will be reported back in the response to this request if it is a command. If it is a response, this will be used as the sequence value for the response. */ struct ipmi_msg msg; }; /* * Send a message to the interfaces. error values are: * - EFAULT - an address supplied was invalid. * - EINVAL - The address supplied was not valid, or the command * was not allowed. * - EMSGSIZE - The message to was too large. * - ENOMEM - Buffers could not be allocated for the command. */ #define IPMICTL_SEND_COMMAND _IOR(IPMI_IOC_MAGIC, 13, \ struct ipmi_req) /* Messages sent to the interface with timing parameters are this format. */ struct ipmi_req_settime { struct ipmi_req req; /* See ipmi_request_settime() above for details on these values. */ int retries; unsigned int retry_time_ms; }; /* * Send a message to the interfaces with timing parameters. error values * are: * - EFAULT - an address supplied was invalid. * - EINVAL - The address supplied was not valid, or the command * was not allowed. * - EMSGSIZE - The message to was too large. * - ENOMEM - Buffers could not be allocated for the command. */ #define IPMICTL_SEND_COMMAND_SETTIME _IOR(IPMI_IOC_MAGIC, 21, \ struct ipmi_req_settime) /* Messages received from the interface are this format. */ struct ipmi_recv { int recv_type; /* Is this a command, response or an asyncronous event. */ unsigned char __user *addr; /* Address the message was from is put here. The caller must supply the memory. */ unsigned int addr_len; /* The size of the address buffer. The caller supplies the full buffer length, this value is updated to the actual message length when the message is received. */ long msgid; /* The sequence number specified in the request if this is a response. If this is a command, this will be the sequence number from the command. */ struct ipmi_msg msg; /* The data field must point to a buffer. The data_size field must be set to the size of the message buffer. The caller supplies the full buffer length, this value is updated to the actual message length when the message is received. */ }; /* * Receive a message. error values: * - EAGAIN - no messages in the queue. * - EFAULT - an address supplied was invalid. * - EINVAL - The address supplied was not valid. * - EMSGSIZE - The message to was too large to fit into the message buffer, * the message will be left in the buffer. */ #define IPMICTL_RECEIVE_MSG _IOWR(IPMI_IOC_MAGIC, 12, \ struct ipmi_recv) /* * Like RECEIVE_MSG, but if the message won't fit in the buffer, it * will truncate the contents instead of leaving the data in the * buffer. */ #define IPMICTL_RECEIVE_MSG_TRUNC _IOWR(IPMI_IOC_MAGIC, 11, \ struct ipmi_recv) /* Register to get commands from other entities on this interface. */ struct ipmi_cmdspec { unsigned char netfn; unsigned char cmd; }; /* * Register to receive a specific command. error values: * - EFAULT - an address supplied was invalid. * - EBUSY - The netfn/cmd supplied was already in use. * - ENOMEM - could not allocate memory for the entry. */ #define IPMICTL_REGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 14, \ struct ipmi_cmdspec) /* * Unregister a registered command. error values: * - EFAULT - an address supplied was invalid. * - ENOENT - The netfn/cmd was not found registered for this user. */ #define IPMICTL_UNREGISTER_FOR_CMD _IOR(IPMI_IOC_MAGIC, 15, \ struct ipmi_cmdspec) /* * Register to get commands from other entities on specific channels. * This way, you can only listen on specific channels, or have messages * from some channels go to one place and other channels to someplace * else. The chans field is a bitmask, (1 << channel) for each channel. * It may be IPMI_CHAN_ALL for all channels. */ struct ipmi_cmdspec_chans { unsigned int netfn; unsigned int cmd; unsigned int chans; }; /* * Register to receive a specific command on specific channels. error values: * - EFAULT - an address supplied was invalid. * - EBUSY - One of the netfn/cmd/chans supplied was already in use. * - ENOMEM - could not allocate memory for the entry. */ #define IPMICTL_REGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 28, \ struct ipmi_cmdspec_chans) /* * Unregister some netfn/cmd/chans. error values: * - EFAULT - an address supplied was invalid. * - ENOENT - None of the netfn/cmd/chans were found registered for this user. */ #define IPMICTL_UNREGISTER_FOR_CMD_CHANS _IOR(IPMI_IOC_MAGIC, 29, \ struct ipmi_cmdspec_chans) /* * Set whether this interface receives events. Note that the first * user registered for events will get all pending events for the * interface. error values: * - EFAULT - an address supplied was invalid. */ #define IPMICTL_SET_GETS_EVENTS_CMD _IOR(IPMI_IOC_MAGIC, 16, int) /* * Set and get the slave address and LUN that we will use for our * source messages. Note that this affects the interface, not just * this user, so it will affect all users of this interface. This is * so some initialization code can come in and do the OEM-specific * things it takes to determine your address (if not the BMC) and set * it for everyone else. You should probably leave the LUN alone. */ struct ipmi_channel_lun_address_set { unsigned short channel; unsigned char value; }; #define IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD \ _IOR(IPMI_IOC_MAGIC, 24, struct ipmi_channel_lun_address_set) #define IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD \ _IOR(IPMI_IOC_MAGIC, 25, struct ipmi_channel_lun_address_set) #define IPMICTL_SET_MY_CHANNEL_LUN_CMD \ _IOR(IPMI_IOC_MAGIC, 26, struct ipmi_channel_lun_address_set) #define IPMICTL_GET_MY_CHANNEL_LUN_CMD \ _IOR(IPMI_IOC_MAGIC, 27, struct ipmi_channel_lun_address_set) /* Legacy interfaces, these only set IPMB 0. */ #define IPMICTL_SET_MY_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 17, unsigned int) #define IPMICTL_GET_MY_ADDRESS_CMD _IOR(IPMI_IOC_MAGIC, 18, unsigned int) #define IPMICTL_SET_MY_LUN_CMD _IOR(IPMI_IOC_MAGIC, 19, unsigned int) #define IPMICTL_GET_MY_LUN_CMD _IOR(IPMI_IOC_MAGIC, 20, unsigned int) /* * Get/set the default timing values for an interface. You shouldn't * generally mess with these. */ struct ipmi_timing_parms { int retries; unsigned int retry_time_ms; }; #define IPMICTL_SET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 22, \ struct ipmi_timing_parms) #define IPMICTL_GET_TIMING_PARMS_CMD _IOR(IPMI_IOC_MAGIC, 23, \ struct ipmi_timing_parms) /* * Set the maintenance mode. See ipmi_set_maintenance_mode() above * for a description of what this does. */ #define IPMICTL_GET_MAINTENANCE_MODE_CMD _IOR(IPMI_IOC_MAGIC, 30, int) #define IPMICTL_SET_MAINTENANCE_MODE_CMD _IOW(IPMI_IOC_MAGIC, 31, int) #endif /* _UAPI__LINUX_IPMI_H */