Module eco.ip

IP configuration helpers.

This module provides a small, convenience API built on top of RTNETLINK via eco.nl and eco.rtnl.

It exposes two subtables:

  • link: manage link-level properties (UP/DOWN, MTU, MAC, master, etc.)
  • address: manage interface addresses (get all; add/del IPv4)

Most operations require sufficient privileges (typically CAP_NET_ADMIN).

Usage:

    local link = require 'eco.ip'.link
    local addr = require 'eco.ip'.address
    
    local ok, err = link.set('eth0', { up = true, mtu = 1500 })
    assert(ok, err)
    
    local res, err = addr.get('eth0')
    assert(res, err)

Functions

link.set (dev[, attrs]) Set link attributes.
link.get (dev) Get link attributes.
address.add (dev, addr) Add an IPv4 address to an interface.
address.del (dev, addr) Delete an IPv4 address from an interface.
address.get ([dev]) Get addresses.


Functions

link.set (dev[, attrs])

Set link attributes.

Supported attrs fields:

  • up (boolean): bring interface up
  • down (boolean): bring interface down
  • arp (boolean): enable/disable ARP
  • dynamic (boolean)
  • multicast (boolean)
  • allmulticast (boolean)
  • promisc (boolean)
  • carrier (boolean)
  • txqueuelen (number)
  • address (string): MAC address like "00:11:22:33:44:55"
  • broadcast (string): MAC address
  • mtu (number)
  • alias (string)
  • master (string): master interface name
  • nomaster (boolean): detach from master

Parameters:

  • dev string Interface name.
  • attrs table Attributes table. (optional)

Returns:

    boolean true On success.

Or

  1. nil On failure.
  2. string Error message.
link.get (dev)

Get link attributes.

Returns a table with fields:

  • ifname (string)
  • alias (string)
  • master (string)
  • type (int)
  • mtu (int)
  • txqueuelen (int)
  • address (string): MAC as "xx:xx:..."
  • broadcast (string): MAC as "xx:xx:..."
  • carrier (boolean)
  • flags (boolean): up, running, arp, dynamic, multicast, allmulticast, promisc

Parameters:

Returns:

    table info Link info table.

Or

  1. nil On failure.
  2. string Error message.
address.add (dev, addr)
Add an IPv4 address to an interface.

addr.address may include prefix length in CIDR form (e.g. "192.168.1.2/24").

Supported addr fields:

  • address (string): IPv4 address (optionally with /prefix)
  • prefix (number): prefix length (default: 32)
  • scope (string): one of "global", "nowhere", "host", "link", "site"
  • broadcast (string): IPv4 broadcast address
  • label (string)
  • metric (number)
  • priority (number)

Note: this helper currently builds an IPv4 (AF_INET) request.

Parameters:

Returns:

    boolean true On success.

Or

  1. nil On failure.
  2. string Error message.
address.del (dev, addr)
Delete an IPv4 address from an interface.

Uses the same addr format as address.add.

Parameters:

Returns:

    boolean true On success.

Or

  1. nil On failure.
  2. string Error message.
address.get ([dev])

Get addresses.

When dev is omitted, dumps addresses for all interfaces.

Returns an array of tables with fields:

  • ifname (string)
  • family (int): address family (e.g. eco.socket.AF_INET)
  • scope (string): scope name
  • address (string)
  • broadcast (string|nil) (IPv4 only)
  • label (string|nil)

Parameters:

  • dev string Interface name. (optional)

Returns:

    table res Array of address info tables.

Or

  1. nil On failure.
  2. string Error message.
generated by LDoc 1.5.0 Last updated 2026-04-09 14:48:22