arping

package module
v0.0.0-...-26aa419 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 2, 2025 License: LGPL-2.1 Imports: 10 Imported by: 1

Documentation

Overview

Package arping is a native go library to ping a host per arp datagram, or query a host mac address

The currently supported platforms are: Linux and BSD.

The library requires raw socket access. So it must run as root, or with appropriate capabilities under linux: `sudo setcap cap_net_raw+ep <BIN>`.

Examples:

ping a host:
------------
  package main
  import ("fmt"; "github.com/j-keck/arping"; "net")

  func main(){
    dstIP := net.ParseIP("192.168.1.1")
    if hwAddr, duration, err := arping.Ping(dstIP); err != nil {
      fmt.Println(err)
    } else {
      fmt.Printf("%s (%s) %d usec\n", dstIP, hwAddr, duration/1000)
    }
  }

resolve mac address:
--------------------
  package main
  import ("fmt"; "github.com/j-keck/arping"; "net")

  func main(){
    dstIP := net.ParseIP("192.168.1.1")
    if hwAddr, _, err := arping.Ping(dstIP); err != nil {
      fmt.Println(err)
    } else {
      fmt.Printf("%s is at %s\n", dstIP, hwAddr)
    }
  }

check if host is online:
------------------------
  package main
  import ("fmt"; "github.com/j-keck/arping"; "net")

  func main(){
    dstIP := net.ParseIP("192.168.1.1")
    _, _, err := arping.Ping(dstIP)
    if err == arping.ErrTimeout {
      fmt.Println("offline")
    }else if err != nil {
      fmt.Println(err.Error())
    }else{
      fmt.Println("online")
    }
  }

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrTimeout error
	ErrTimeout = errors.New("timeout")
)

Functions

func EnableVerboseLog

func EnableVerboseLog()

EnableVerboseLog enables verbose logging on stdout

func GratuitousArp

func GratuitousArp(srcIP net.IP) error

GratuitousArp sends an gratuitous arp from 'srcIP'

func GratuitousArpOverIface

func GratuitousArpOverIface(srcIP net.IP, iface net.Interface) error

GratuitousArpOverIface sends an gratuitous arp over interface 'iface' from 'srcIP'

func GratuitousArpOverIfaceByName

func GratuitousArpOverIfaceByName(srcIP net.IP, ifaceName string) error

GratuitousArpOverIfaceByName sends an gratuitous arp over interface name 'ifaceName' from 'srcIP'

func Ping

func Ping(dstIP net.IP) (net.HardwareAddr, time.Duration, error)

Ping sends an arp ping to 'dstIP'

func PingOverIface

func PingOverIface(dstIP net.IP, iface net.Interface) (net.HardwareAddr, time.Duration, error)

PingOverIface sends an arp ping over interface 'iface' to 'dstIP'

func PingOverIfaceByName

func PingOverIfaceByName(dstIP net.IP, ifaceName string) (net.HardwareAddr, time.Duration, error)

PingOverIfaceByName sends an arp ping over interface name 'ifaceName' to 'dstIP'

func SetTimeout

func SetTimeout(t time.Duration)

SetTimeout sets ping timeout

Types

type LinuxSocket

type LinuxSocket struct {
	// contains filtered or unexported fields
}

Directories

Path Synopsis
cmd
arpping command
command line arping utility which use the 'arping' library
command line arping utility which use the 'arping' library

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL