Enum uds::ConnCredentials[][src]

pub enum ConnCredentials {
    LinuxLike {
        pid: NonZeroU32,
        euid: u32,
        egid: u32,
    },
    MacOsLike {
        euid: u32,
        number_of_groups: u8,
        groups: [u32; 16],
    },
}

Credentials of the peer process when it called connect(), accept() or pair().

User and group IDs can be misleading if the peer side of the socket has been transfered to another process or the peer has changed privileges.
PID is almost impossible to use correctly, as the peer might have terminated and the pid reused, or as for euid, the socket has been sent to another process (via fd-passing or forking).

What information is received varies from OS to OS:

  • Linux, OpenBSD and NetBSD provides process ID, effective user ID and effective group id.
  • macOS, FreeBSD and DragonFly BSD provides effective user ID and group memberships. (The first group is also the effective group ID.) FreeBSD 13+ will also provide process ID.
  • Illumos and Solaris provide more than one could possibly want (the LinuxLike variant is most likely returned).

Current limitations of this crate:

  • Illumos and Solaris provides enough information to fill out both variants, but obviously only one can be returned.
  • FreeBSD 13 will also provide pid, but this crate doesn’t detect that.

Variants

LinuxLike

Fields of LinuxLike

pid: NonZeroU32euid: u32egid: u32
MacOsLike

Fields of MacOsLike

euid: u32number_of_groups: u8groups: [u32; 16]

Implementations

impl ConnCredentials[src]

pub fn pid(&self) -> Option<NonZeroU32>[src]

Get the process ID of the initial peer of a connection.

This is currently only available on Linux & Android, but will in the future also be available on OpenBSD and NetBSD, and possibly also FreeBSD and Solaris.

pub fn euid(&self) -> u32[src]

Get the effective user ID of the initial peer of a connection.

This is provided by any supported OS.

pub fn egid(&self) -> Option<u32>[src]

Get the effective group ID of the initial peer of a connection.

  • On Linux, Android, OpenBSD and NetBSD, egid from the LinuxLike variant is returned.
  • On FreeBSD, DragonFly BSD, macOS & other Apple platforms, groups[0] from the MacOsLike variant is returned (except in the unlikely case that number_of_groups is zero).

pub fn groups(&self) -> &[u32]

Notable traits for &'_ [u8]

impl<'_> Read for &'_ [u8]impl<'_> Write for &'_ mut [u8]
[src]

Get the groups that the initial peer of a connection was a mamber of.

This is only available on FreeBSD and macOS (in the future also DragonFly BSD), and an empty slice is returned on other OSes.

Trait Implementations

impl Clone for ConnCredentials[src]

impl Copy for ConnCredentials[src]

impl Debug for ConnCredentials[src]

impl PartialEq<ConnCredentials> for ConnCredentials[src]

impl StructuralPartialEq for ConnCredentials[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.