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
attrsfields:up(boolean): bring interface updown(boolean): bring interface downarp(boolean): enable/disable ARPdynamic(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 addressmtu(number)alias(string)master(string): master interface namenomaster(boolean): detach from master
Parameters:
Returns:
-
boolean
true On success.
Or
- nil On failure.
- 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:
- dev string Interface name.
Returns:
-
table
info Link info table.
Or
- nil On failure.
- string Error message.
- address.add (dev, addr)
-
Add an IPv4 address to an interface.
addr.addressmay include prefix length in CIDR form (e.g."192.168.1.2/24").Supported
addrfields: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 addresslabel(string)metric(number)priority(number)
Note: this helper currently builds an IPv4 (
AF_INET) request.Parameters:
Returns:
-
boolean
true On success.
Or
- nil On failure.
- string Error message.
- address.del (dev, addr)
-
Delete an IPv4 address from an interface.
Uses the same
addrformat as address.add.Parameters:
Returns:
-
boolean
true On success.
Or
- nil On failure.
- string Error message.
- address.get ([dev])
-
Get addresses.
When
devis 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 nameaddress(string)broadcast(string|nil) (IPv4 only)label(string|nil)
Parameters:
- dev string Interface name. (optional)
Returns:
-
table
res Array of address info tables.
Or
- nil On failure.
- string Error message.