trireme-lib: go.aporeto.io/trireme-lib/utils/frontman Index | Files

package frontman

import "go.aporeto.io/trireme-lib/utils/frontman"

Index

Package Files

driver_windows.go wrapper_windows.go

Constants

const (
    FilterActionContinue = iota
    FilterActionAllow
    FilterActionBlock
    FilterActionProxy
    FilterActionNfq
    FilterActionForceNfq
)

See frontmanIO.h for #defines

const (
    BytesMatchStartIPHeader = iota + 1
    BytesMatchStartProtocolHeader
    BytesMatchStartPayload
)

See frontmanIO.h for #defines

const (
    CriteriaListFormatString = iota + 1
    CriteriaListFormatJSON
)

See Filter_set.h

const (
    IpsetsDetailFormatString = iota + 1
    IpsetsDetailFormatJSON
)

See Ipset.h

Variables

var Driver = ABI(&driver{})

Driver is actually the concrete calls into the Frontman dll, which call into the driver

var Wrapper = WrapDriver(&wrapper{})

Wrapper is the driver/dll wrapper implementation

type ABI Uses

type ABI interface {
    FrontmanOpenShared() (uintptr, error)
    GetDestInfo(driverHandle, socket, destInfo uintptr) (uintptr, error)
    ApplyDestHandle(socket, destHandle uintptr) (uintptr, error)
    FreeDestHandle(destHandle uintptr) (uintptr, error)
    NewIpset(driverHandle, name, ipsetType, ipset uintptr) (uintptr, error)
    GetIpset(driverHandle, name, ipset uintptr) (uintptr, error)
    DestroyAllIpsets(driverHandle, prefix uintptr) (uintptr, error)
    ListIpsets(driverHandle, ipsetNames, ipsetNamesSize, bytesReturned uintptr) (uintptr, error)
    ListIpsetsDetail(driverHandle, format, ipsetNames, ipsetNamesSize, bytesReturned uintptr) (uintptr, error)
    IpsetAdd(driverHandle, ipset, entry, timeout uintptr) (uintptr, error)
    IpsetAddOption(driverHandle, ipset, entry, option, timeout uintptr) (uintptr, error)
    IpsetDelete(driverHandle, ipset, entry uintptr) (uintptr, error)
    IpsetDestroy(driverHandle, ipset uintptr) (uintptr, error)
    IpsetFlush(driverHandle, ipset uintptr) (uintptr, error)
    IpsetTest(driverHandle, ipset, entry uintptr) (uintptr, error)
    PacketFilterStart(frontman, firewallName, receiveCallback, loggingCallback uintptr) (uintptr, error)
    PacketFilterClose() (uintptr, error)
    PacketFilterForward(info, packet uintptr) (uintptr, error)
    AppendFilter(driverHandle, outbound, filterName uintptr) (uintptr, error)
    InsertFilter(driverHandle, outbound, priority, filterName uintptr) (uintptr, error)
    DestroyFilter(driverHandle, filterName uintptr) (uintptr, error)
    EmptyFilter(driverHandle, filterName uintptr) (uintptr, error)
    GetFilterList(driverHandle, outbound, buffer, bufferSize, bytesReturned uintptr) (uintptr, error)
    AppendFilterCriteria(driverHandle, filterName, criteriaName, ruleSpec, ipsetRuleSpecs, ipsetRuleSpecCount uintptr) (uintptr, error)
    DeleteFilterCriteria(driverHandle, filterName, criteriaName uintptr) (uintptr, error)
    GetCriteriaList(driverHandle, format, criteriaList, criteriaListSize, bytesReturned uintptr) (uintptr, error)
}

ABI represents the 'application binary interface' to the Frontman dll

type DestInfo Uses

type DestInfo struct {
    IPAddr     *uint16 // WCHAR* IPAddress		Destination address allocated and will be free by FrontmanFreeDestHandle
    Port       uint16  // USHORT Port			Destination port
    Outbound   int32   // INT32 Outbound		Whether or not this is an outbound or inbound connection
    ProcessID  uint64  // UINT64 ProcessId		Process id.  Only available for outbound connections
    DestHandle uintptr // LPVOID DestHandle		Handle to memory that must be freed by called ProxyDestConnected when connection is established.
}

DestInfo mirrors frontman's DEST_INFO struct

type IpsetRuleSpec Uses

type IpsetRuleSpec struct {
    NotIpset     uint8
    IpsetDstIP   uint8
    IpsetDstPort uint8
    IpsetSrcIP   uint8
    IpsetSrcPort uint8
    Reserved1    uint8
    Reserved2    uint8
    Reserved3    uint8
    IpsetName    uintptr // const wchar_t*
}

IpsetRuleSpec mirrors frontman's IPSET_RULE_SPEC struct

type LogPacketInfo Uses

type LogPacketInfo struct {
    Ipv4       uint8
    Protocol   uint8
    Outbound   uint8
    Reserved1  uint8
    LocalPort  uint16
    RemotePort uint16
    LocalAddr  [4]uint32
    RemoteAddr [4]uint32
    PacketSize uint32
    GroupID    uint32
    LogPrefix  [64]uint16
}

LogPacketInfo mirrors frontman's FRONTMAN_LOG_PACKET_INFO struct

type PacketInfo Uses

type PacketInfo struct {
    Ipv4                         uint8
    Protocol                     uint8
    Outbound                     uint8
    Drop                         uint8
    IgnoreFlow                   uint8
    Reserved1                    uint8
    Reserved2                    uint8
    Reserved3                    uint8
    LocalPort                    uint16
    RemotePort                   uint16
    LocalAddr                    [4]uint32
    RemoteAddr                   [4]uint32
    IfIdx                        uint32
    SubIfIdx                     uint32
    PacketSize                   uint32
    Mark                         uint32
    StartTimeReceivedFromNetwork uint64
    StartTimeSentToUserLand      uint64
}

PacketInfo mirrors frontman's FRONTMAN_PACKET_INFO struct

type PortRange Uses

type PortRange struct {
    PortStart uint16
    PortEnd   uint16
}

PortRange mirrors frontman's PORT_RANGE struct

type RuleSpec Uses

type RuleSpec struct {
    Action            uint8
    Log               uint8
    Protocol          uint8
    ProtocolSpecified uint8
    IcmpType          uint8
    IcmpTypeSpecified uint8
    IcmpCode          uint8
    IcmpCodeSpecified uint8
    AleAuthConnect    uint8 // not used by us
    Reserved1         uint8
    Reserved2         uint8
    Reserved3         uint8
    ProxyPort         uint16
    BytesMatchStart   int16 // See frontmanIO.h for BYTESMATCH defines.
    BytesMatchOffset  int32
    BytesMatchSize    int32
    BytesMatch        *byte
    Mark              uint32
    GroupID           uint32
    SrcPortCount      int32
    DstPortCount      int32
    SrcPorts          *PortRange
    DstPorts          *PortRange
    LogPrefix         uintptr // const wchar_t*
    Application       uintptr // const wchar_t*
}

RuleSpec mirrors frontman's RULE_SPEC struct

type WrapDriver Uses

type WrapDriver interface {
    GetDestInfo(socket uintptr, destInfo *DestInfo) error
    ApplyDestHandle(socket, destHandle uintptr) error
    FreeDestHandle(destHandle uintptr) error
    NewIpset(name, ipsetType string) (uintptr, error)
    GetIpset(name string) (uintptr, error)
    DestroyAllIpsets(prefix string) error
    ListIpsets() ([]string, error)
    ListIpsetsDetail(format int) (string, error)
    IpsetAdd(ipsetHandle uintptr, entry string, timeout int) error
    IpsetAddOption(ipsetHandle uintptr, entry, option string, timeout int) error
    IpsetDelete(ipsetHandle uintptr, entry string) error
    IpsetDestroy(ipsetHandle uintptr) error
    IpsetFlush(ipsetHandle uintptr) error
    IpsetTest(ipsetHandle uintptr, entry string) (bool, error)
    PacketFilterStart(firewallName string, receiveCallback, loggingCallback func(uintptr, uintptr) uintptr) error
    PacketFilterClose() error
    PacketFilterForward(info *PacketInfo, packetBytes []byte) error
    AppendFilter(outbound bool, filterName string) error
    InsertFilter(outbound bool, priority int, filterName string) error
    DestroyFilter(filterName string) error
    EmptyFilter(filterName string) error
    GetFilterList(outbound bool) ([]string, error)
    AppendFilterCriteria(filterName, criteriaName string, ruleSpec *RuleSpec, ipsetRuleSpecs []IpsetRuleSpec) error
    DeleteFilterCriteria(filterName, criteriaName string) error
    GetCriteriaList(format int) (string, error)
}

WrapDriver represents convenience wrapper methods for calling our Windows Frontman DLL

Package frontman imports 5 packages (graph) and is imported by 2 packages. Updated 2020-03-30 with GOOS=windows. Refresh now. Tools for package owners.