1*413a4317SStefan Hajnoczi /* AF_VSOCK sock_diag(7) interface for querying open sockets */ 2*413a4317SStefan Hajnoczi 3*413a4317SStefan Hajnoczi #ifndef _UAPI__VM_SOCKETS_DIAG_H__ 4*413a4317SStefan Hajnoczi #define _UAPI__VM_SOCKETS_DIAG_H__ 5*413a4317SStefan Hajnoczi 6*413a4317SStefan Hajnoczi #include <linux/types.h> 7*413a4317SStefan Hajnoczi 8*413a4317SStefan Hajnoczi /* Request */ 9*413a4317SStefan Hajnoczi struct vsock_diag_req { 10*413a4317SStefan Hajnoczi __u8 sdiag_family; /* must be AF_VSOCK */ 11*413a4317SStefan Hajnoczi __u8 sdiag_protocol; /* must be 0 */ 12*413a4317SStefan Hajnoczi __u16 pad; /* must be 0 */ 13*413a4317SStefan Hajnoczi __u32 vdiag_states; /* query bitmap (e.g. 1 << TCP_LISTEN) */ 14*413a4317SStefan Hajnoczi __u32 vdiag_ino; /* must be 0 (reserved) */ 15*413a4317SStefan Hajnoczi __u32 vdiag_show; /* must be 0 (reserved) */ 16*413a4317SStefan Hajnoczi __u32 vdiag_cookie[2]; 17*413a4317SStefan Hajnoczi }; 18*413a4317SStefan Hajnoczi 19*413a4317SStefan Hajnoczi /* Response */ 20*413a4317SStefan Hajnoczi struct vsock_diag_msg { 21*413a4317SStefan Hajnoczi __u8 vdiag_family; /* AF_VSOCK */ 22*413a4317SStefan Hajnoczi __u8 vdiag_type; /* SOCK_STREAM or SOCK_DGRAM */ 23*413a4317SStefan Hajnoczi __u8 vdiag_state; /* sk_state (e.g. TCP_LISTEN) */ 24*413a4317SStefan Hajnoczi __u8 vdiag_shutdown; /* local RCV_SHUTDOWN | SEND_SHUTDOWN */ 25*413a4317SStefan Hajnoczi __u32 vdiag_src_cid; 26*413a4317SStefan Hajnoczi __u32 vdiag_src_port; 27*413a4317SStefan Hajnoczi __u32 vdiag_dst_cid; 28*413a4317SStefan Hajnoczi __u32 vdiag_dst_port; 29*413a4317SStefan Hajnoczi __u32 vdiag_ino; 30*413a4317SStefan Hajnoczi __u32 vdiag_cookie[2]; 31*413a4317SStefan Hajnoczi }; 32*413a4317SStefan Hajnoczi 33*413a4317SStefan Hajnoczi #endif /* _UAPI__VM_SOCKETS_DIAG_H__ */ 34