iproute4mac


Nameiproute4mac JSON
Version 0.5.7 PyPI version JSON
download
home_pagehttps://github.com/signal-09/iproute4mac
Summaryiproute for Mac
upload_time2024-10-01 10:09:16
maintainerNone
docs_urlNone
authorEttore Simone
requires_python>=3.10
licenseApache License, Version 2.0
keywords iproute2 ip ifconfig
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ===========
iproute4mac
===========

|CI| |PYPI|

This is a macOS network wrapper to imitate GNU/Linux
`iproute2 <https://wiki.linuxfoundation.org/networking/iproute2>`__
suite, inspired by the
`iproute2mac <https://github.com/brona/iproute2mac>`__ project.

Working staff
=============

Command ``ip``:

============== =========== ========= =============
objects        implemented supported note
============== =========== ========= =============
``address``    yes         yes
``address``    yes         yes
``addrlabel``  no          ?         IPv6 protocol address label
``maddress``   no          ?
``route``      yes         yes
``rule``       no          ?         (e.g. `source based routing with FreeBSD... <https://mmacleod.ca/2011/06/source-based-routing-with-freebsd-using-multiple-routing-table/>`__)
``neighbor``   yes         yes       using `ARP <https://en.wikipedia.org/wiki/Address_Resolution_Protocol>`__ for IPv4 and `NDP <https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol>`__ for IPv6
``ntable``     no          ?
``ntbl``       no          ?
``link``       yes         yes
``l2tp``       no          ?
``fou``        no          ?         IP-IP tunnel over UDP?
``ila``        no          ?         IPv6 Identifier Locator Addressing
``macsec``     no          no
``tunnel``     no          yes       `IP-IP <https://kovyrin.net/2006/03/17/how-to-create-ip-ip-tunnel-between-freebsd-and-linux/>`__ only
``tuntap``     no          ?         `Tunnelblick <https://github.com/Tunnelblick/Tunnelblick/tree/master/third_party>`__ third party `tuntaposx <https://tuntaposx.sourceforge.net>`__?
``token``      no          ?         May be related to `non-numeric IPv6 mask <https://forums.freebsd.org/threads/how-to-apply-non-numeric-mask-to-ipv6-address.69829/>`__?
``tcpmetrics`` no          ?
``monitor``    no          no
``xfrm``       no          no
``mroute``     no          ?         See `Max OS: no multicast route for 127.0.0.1 <https://issues.redhat.com/browse/JGRP-1808>`__
``mrule``      no          ?
``netns``      no          no
``netconf``    no          yes
``vrf``        no          ?         `Virtual Routing and Forwarding <https://en.wikipedia.org/wiki/Virtual_routing_and_forwarding>`__
``sr``         no          ?         IPv6 Segment Routing management
``nexthop``    no          ?
``mptcp``      no          no        Multipath TCP
``ioam``       no          ?         IPv6 In-situ OAM (IOAM)
``help``       yes         yes
``stats``      no          ?
============== =========== ========= =============

Command ``bridge``:

=========== =========== ========= =============
objects     implemented supported note
=========== =========== ========= =============
``link``    yes         yes       ``show`` only
``fdb``     yes         yes       ``show`` only
=========== =========== ========= =============

Examples:

-  ``ip address [ list | show ]``
-  ``ip address { add | change | replace | delete }``
-  ``ip link [ list | show ]``
-  ``ip link { add | set | change | delete }``
-  ``ip route [ list | show ]``
-  ``ip route { add | change | replace | delete }``
-  ``ip route get``
-  ``ip neigh [ list | show ]``
-  ``ip neigh flush``
-  ``bridge link [ list | show ]``
-  ``bridge fdb [ list | show ]``


Installation
============


Homebrew
--------

The preferred method of installation is `Homebrew <https://brew.sh>`__.

In order to use this tap, you can install directly the package:

.. code:: shell

   brew install signal-09/tap/iproute4mac

Or subscribe the tap
`repository <https://github.com/signal-09/homebrew-tap>`__ and then
install the package:

.. code:: shell

   brew tap signal-09/tap
   brew install iproute4mac


PyPI
----

Create a Virtual Environment and upgrade ``pip`` module:

.. code:: shell

   python3 -m venv venv
   source venv/bin/activate
   python3 -m pip install -U pip

Then install ``iproute4mac``:

.. code:: shell

   python3 -m pip install iproute4mac

Usage
=====

**iproute4mac** try to imitate as much as possible the *look & feel* of
the GNU/Linux iproute2 suite, but macOS (Darwin) is a BSD derivative,
and some aspects cannot be replicated at all.


``ip address show``: look at protocol addresses
-----------------------------------------------

Implemented syntax:

   ip address [ show [ dev IFNAME ] [ master DEVICE \| nomaster ] [ type TYPE ] [up] ]


   TYPE := { bond \| bond_slave \| bridge \| bridge_slave \| **feth**:superscript:`5` \| vlan }

Shows IPv4 and IPv6 addresses assigned to all network interfaces. The
‘show’ subcommand can be omitted:

.. code:: shell

   ip address show

Same as above except that only IPv6 addresses assigned to active network
interfaces are shown:

.. code:: shell

   ip -6 address show up

Shows IPv4 and IPv6 addresses assigned to network interface en0 in
pretty printed JSON:

.. code:: shell

   ip -j -p address show dev en0

Shows IPv4 only addresses assigned to networks member of bridge0:

.. code:: shell

   ip -4 address show master bridge0

Shows IP addresses belonging to private C class network 192.168.0.0/24:

.. code:: shell

   ip address show to 192.168.0.0/24

Note:
^^^^^

1. ``qdisc`` (queuing discipline) is part of the Linux Traffic Control
   subsystem (TC) managed via the ``tc`` utility. Even if this
   information is not reported, similar results in traffic control and
   shaping can be achieved using ``dnctl`` and ``pfctl``.
2. ``address lifetime`` for IPv6 addresses (-L flag of ``ifconfig``) is
   not provided anymore in Sonoma (macOS 14); for IPv4, addresses
   *valid* and *prederred* lifetime, is supposed *forever* (0xffffffff =
   4.294.967.295 = 32 bit).
3. ``sysctl net.inet6.ip6.temppltime`` specifies the “preferred
   lifetime” for privacy addresses, in seconds, and defaults to 86400
   (one day).
4. ``sysctl net.inet6.ip6.tempvltime`` specifies the “valid lifetime”
   for privacy addresses, in second, and defaults to 604800 (one week).
5. ``veth`` can be replaced by ``feth`` in macOS


``ip address add``: add new protocol address
--------------------------------------------


``ip address change``: change protocol address
----------------------------------------------


``ip address replace``: change or add protocol address
------------------------------------------------------

Implemented syntax:

   ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ] [
   CONFFLAG-LIST ]

Note:
^^^^^

1. ``{change|replace}`` option “really” change address properties
   (e.g. broadcast) while Linux simply ignore them.


``ip address delete``: delete protocol address
----------------------------------------------


``ip link show``: display device attributes
-------------------------------------------

Implemented syntax:

   ip link show [ DEVICE ] [ up ] [ master DEVICE \| nomaster ] [ type ETYPE ]

   ETYPE := [ TYPE \| bridge_slave \| bond_slave ]

   TYPE := [ bridge \| bond ]

Shows the state of all network interfaces on the system:

.. code:: shell

   ip link show

Shows the bridge devices:

.. code:: shell

   ip link show type bridge

Shows the vlan devices:

.. code:: shell

   ip link show type vlan

Shows devices enslaved by bridge0:

.. code:: shell

   ip link show master bridge0

Note:
^^^^^

1. ``txqlen`` (the transmit queue length) is not configurable on
   specific interface; a system default value is managed via
   ``sysctl net.link.generic.system.sndq_maxlen`` (or
   ``net.link.generic.system.rcvq_maxlen``).


``ip link add``: add virtual link
---------------------------------

Implemented syntax:

   ip link add [ link DEV ] [ name ] NAME [ address LLADDR ] [ mtu MTU ] type TYPE [ ARGS ]

Create a VLAN with TAG 100 linked to en1:

.. code:: shell

   ip link add link en1 name vlan100 type vlan id 100

Create a new bridge interface (auto numbering1):

.. code:: shell

   ip link add type bridge

Create a new bridge with a specified name:

.. code:: shell

   ip link add bridge20 type bridge

Create a new static bond (vs lacp) interface:

.. code:: shell

   ip link add bond1 type bond mode active-backup

Note:
^^^^^

1. macOS ``ifconfig`` print the created interface name to the standard
   output


``ip link delete``: delete virtual link
---------------------------------------

Implemented syntax:

   ip link delete { DEVICE \| dev DEVICE } type TYPE [ ARGS ]

Delete any kind of virtual interface:

.. code:: shell

   ip link del vlan100


``ip link set`` (or ``change``): change device attributes
---------------------------------------------------------

Implemented syntax:


``ip route show``: list routes
------------------------------

Implemented syntax:

   ip route [ show [ SELECTOR ] ]

   SELECTOR := [ proto RTPROTO ] [ type TYPE ] [ scope SCOPE ]

   TYPE := { unicast \| broadcast \| multicast \| blackhole }

   SCOPE := [ host \| link \| global ]

   RTPROTO := [ kernel \| static ]

List routes using a specific gateway:

.. code:: shell

   ip route show via 192.168.0.1

List IPv6 routes using a specific network interface:

.. code:: shell

   ip -6 route show dev en1

List routes for multicast:

.. code:: shell

   ip route show type multicast

List availabe routes to reach specific network:

.. code:: shell

   ip route show to match 192.168.1.0/24

List IPv4 and IPv6 routes2

.. code:: shell

   ip route show table all

Note:
^^^^^

1. ``iif`` is not honored (is treated like ``dev`` and ``oif``).
2. *Route tables* are not implemented in macOS (Darwin), but “table all”
   will result in show IPv4 + IPv6 routes


``ip route add``: add new route
-------------------------------


``ip route delete``: delete route
---------------------------------


``ip route change``: change route
---------------------------------


``ip route replace``: change or add new one
-------------------------------------------

Implemented syntax:

   ip route { add \| delete \| change \| replace } ROUTE

   ROUTE := [ TYPE ] PREFIX [ tos TOS ] [ proto RTPROTO ] [ scope SCOPE ]

   TYPE := { unicast \| broadcast \| multicast \| blackhole }

   SCOPE := [ host \| link \| global ]

   RTPROTO := [ kernel \| boot \| static ]

Add direct routing on a specific network interface:

.. code:: shell

   ip route add 192.168.22.0/24 dev en1

Change interface for a given route:

.. code:: shell

   ip route change 192.168.22.0/24 dev en0

Replace default gateway:

.. code:: shell

   ip route replace default via 192.168.0.254

Delete route:

.. code:: shell

   ip route del 192.168.22.0/24


``ip route get``: get a single route
------------------------------------

Implemented syntax:

   ip route get ADDRESS

Shows the route to reach Google DNS 8.8.8.8:

.. code:: shell

   ip route get 8.8.8.8


``ip neigh show``: list neighbour entries
-----------------------------------------

Note:
^^^^^

1. NOARP and PERMANENT states are not catched


``ip neigh flush``: flush neighbour entries
-------------------------------------------

Same syntax of ``ip neigh show``


Contributing
------------

Every contribute is welcome!


Fork the repository
-------------------

.. figure::
   https://docs.github.com/assets/cb-34352/mw-1440/images/help/repository/fork-button.webp
   :alt: Fork button

   Fork button


Clone the fork
--------------

.. code:: shell

   git clone https://github.com/YOUR-USERNAME/iproute4mac


Create a branch
---------------

Before making changes to the project, you should create a new branch and
check it out (see “`GitHub
flow <https://docs.github.com/en/get-started/using-github/github-flow#following-github-flow>`__”).

.. code:: shell

   git branch BRANCH-NAME
   git checkout BRANCH-NAME


Create a developer environment
------------------------------

.. code:: shell

   python3 -m venv venv
   source venv/bin/activate

Then install requiered packages:

.. code:: shell

   python3 -m pip install -U pip
   python3 -m pip install pre-commit pytest pytest-console-scripts
   pre-commit install


Coding style
------------

`Ruff <https://docs.astral.sh/ruff/>`__ is used to enforce coding style.
You can checkout the compliance with the following command:

.. code:: shell

   pre-commit run --all-files [--show-diff-on-failure]


Commit your work
----------------

Create as few commit as possible to make diff checking easier. In case
of modification of already pushed commit, amend it if possible:

.. code:: shell

   git add -A
   git commit --amend
   git push --force

In case of multiple and not organic commits, “`Squash and
merge <https://docs.github.com/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-commits>`__”
policy will be applied.

.. |CI| image:: https://github.com/signal-09/iproute4mac/actions/workflows/python-package.yml/badge.svg?branch=master
   :target: https://github.com/signal-09/iproute4mac/actions/workflows/python-package.yml

.. |PYPI| image:: https://img.shields.io/pypi/dm/iproute4mac
   :target: https://pypi.org/project/iproute4mac/


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/signal-09/iproute4mac",
    "name": "iproute4mac",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "iproute2, ip, ifconfig",
    "author": "Ettore Simone",
    "author_email": "ettore.simone@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/f6/be/c00247d5af3d358082aa91f69c2b8848ede7286e455cf91b30d504c81860/iproute4mac-0.5.7.tar.gz",
    "platform": null,
    "description": "===========\niproute4mac\n===========\n\n|CI| |PYPI|\n\nThis is a macOS network wrapper to imitate GNU/Linux\n`iproute2 <https://wiki.linuxfoundation.org/networking/iproute2>`__\nsuite, inspired by the\n`iproute2mac <https://github.com/brona/iproute2mac>`__ project.\n\nWorking staff\n=============\n\nCommand ``ip``:\n\n============== =========== ========= =============\nobjects        implemented supported note\n============== =========== ========= =============\n``address``    yes         yes\n``address``    yes         yes\n``addrlabel``  no          ?         IPv6 protocol address label\n``maddress``   no          ?\n``route``      yes         yes\n``rule``       no          ?         (e.g. `source based routing with FreeBSD... <https://mmacleod.ca/2011/06/source-based-routing-with-freebsd-using-multiple-routing-table/>`__)\n``neighbor``   yes         yes       using `ARP <https://en.wikipedia.org/wiki/Address_Resolution_Protocol>`__ for IPv4 and `NDP <https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol>`__ for IPv6\n``ntable``     no          ?\n``ntbl``       no          ?\n``link``       yes         yes\n``l2tp``       no          ?\n``fou``        no          ?         IP-IP tunnel over UDP?\n``ila``        no          ?         IPv6 Identifier Locator Addressing\n``macsec``     no          no\n``tunnel``     no          yes       `IP-IP <https://kovyrin.net/2006/03/17/how-to-create-ip-ip-tunnel-between-freebsd-and-linux/>`__ only\n``tuntap``     no          ?         `Tunnelblick <https://github.com/Tunnelblick/Tunnelblick/tree/master/third_party>`__ third party `tuntaposx <https://tuntaposx.sourceforge.net>`__?\n``token``      no          ?         May be related to `non-numeric IPv6 mask <https://forums.freebsd.org/threads/how-to-apply-non-numeric-mask-to-ipv6-address.69829/>`__?\n``tcpmetrics`` no          ?\n``monitor``    no          no\n``xfrm``       no          no\n``mroute``     no          ?         See `Max OS: no multicast route for 127.0.0.1 <https://issues.redhat.com/browse/JGRP-1808>`__\n``mrule``      no          ?\n``netns``      no          no\n``netconf``    no          yes\n``vrf``        no          ?         `Virtual Routing and Forwarding <https://en.wikipedia.org/wiki/Virtual_routing_and_forwarding>`__\n``sr``         no          ?         IPv6 Segment Routing management\n``nexthop``    no          ?\n``mptcp``      no          no        Multipath TCP\n``ioam``       no          ?         IPv6 In-situ OAM (IOAM)\n``help``       yes         yes\n``stats``      no          ?\n============== =========== ========= =============\n\nCommand ``bridge``:\n\n=========== =========== ========= =============\nobjects     implemented supported note\n=========== =========== ========= =============\n``link``    yes         yes       ``show`` only\n``fdb``     yes         yes       ``show`` only\n=========== =========== ========= =============\n\nExamples:\n\n-  ``ip address [ list | show ]``\n-  ``ip address { add | change | replace | delete }``\n-  ``ip link [ list | show ]``\n-  ``ip link { add | set | change | delete }``\n-  ``ip route [ list | show ]``\n-  ``ip route { add | change | replace | delete }``\n-  ``ip route get``\n-  ``ip neigh [ list | show ]``\n-  ``ip neigh flush``\n-  ``bridge link [ list | show ]``\n-  ``bridge fdb [ list | show ]``\n\n\nInstallation\n============\n\n\nHomebrew\n--------\n\nThe preferred method of installation is `Homebrew <https://brew.sh>`__.\n\nIn order to use this tap, you can install directly the package:\n\n.. code:: shell\n\n   brew install signal-09/tap/iproute4mac\n\nOr subscribe the tap\n`repository <https://github.com/signal-09/homebrew-tap>`__ and then\ninstall the package:\n\n.. code:: shell\n\n   brew tap signal-09/tap\n   brew install iproute4mac\n\n\nPyPI\n----\n\nCreate a Virtual Environment and upgrade ``pip`` module:\n\n.. code:: shell\n\n   python3 -m venv venv\n   source venv/bin/activate\n   python3 -m pip install -U pip\n\nThen install ``iproute4mac``:\n\n.. code:: shell\n\n   python3 -m pip install iproute4mac\n\nUsage\n=====\n\n**iproute4mac** try to imitate as much as possible the *look & feel* of\nthe GNU/Linux iproute2 suite, but macOS (Darwin) is a BSD derivative,\nand some aspects cannot be replicated at all.\n\n\n``ip address show``: look at protocol addresses\n-----------------------------------------------\n\nImplemented syntax:\n\n   ip address [ show [ dev IFNAME ] [ master DEVICE \\| nomaster ] [ type TYPE ] [up] ]\n\n\n   TYPE := { bond \\| bond_slave \\| bridge \\| bridge_slave \\| **feth**:superscript:`5` \\| vlan }\n\nShows IPv4 and IPv6 addresses assigned to all network interfaces. The\n\u2018show\u2019 subcommand can be omitted:\n\n.. code:: shell\n\n   ip address show\n\nSame as above except that only IPv6 addresses assigned to active network\ninterfaces are shown:\n\n.. code:: shell\n\n   ip -6 address show up\n\nShows IPv4 and IPv6 addresses assigned to network interface en0 in\npretty printed JSON:\n\n.. code:: shell\n\n   ip -j -p address show dev en0\n\nShows IPv4 only addresses assigned to networks member of bridge0:\n\n.. code:: shell\n\n   ip -4 address show master bridge0\n\nShows IP addresses belonging to private C class network 192.168.0.0/24:\n\n.. code:: shell\n\n   ip address show to 192.168.0.0/24\n\nNote:\n^^^^^\n\n1. ``qdisc`` (queuing discipline) is part of the Linux Traffic Control\n   subsystem (TC) managed via the ``tc`` utility. Even if this\n   information is not reported, similar results in traffic control and\n   shaping can be achieved using ``dnctl`` and ``pfctl``.\n2. ``address lifetime`` for IPv6 addresses (-L flag of ``ifconfig``) is\n   not provided anymore in Sonoma (macOS 14); for IPv4, addresses\n   *valid* and *prederred* lifetime, is supposed *forever* (0xffffffff =\n   4.294.967.295 = 32 bit).\n3. ``sysctl net.inet6.ip6.temppltime`` specifies the \u201cpreferred\n   lifetime\u201d for privacy addresses, in seconds, and defaults to 86400\n   (one day).\n4. ``sysctl net.inet6.ip6.tempvltime`` specifies the \u201cvalid lifetime\u201d\n   for privacy addresses, in second, and defaults to 604800 (one week).\n5. ``veth`` can be replaced by ``feth`` in macOS\n\n\n``ip address add``: add new protocol address\n--------------------------------------------\n\n\n``ip address change``: change protocol address\n----------------------------------------------\n\n\n``ip address replace``: change or add protocol address\n------------------------------------------------------\n\nImplemented syntax:\n\n   ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ] [\n   CONFFLAG-LIST ]\n\nNote:\n^^^^^\n\n1. ``{change|replace}`` option \u201creally\u201d change address properties\n   (e.g. broadcast) while Linux simply ignore them.\n\n\n``ip address delete``: delete protocol address\n----------------------------------------------\n\n\n``ip link show``: display device attributes\n-------------------------------------------\n\nImplemented syntax:\n\n   ip link show [ DEVICE ] [ up ] [ master DEVICE \\| nomaster ] [ type ETYPE ]\n\n   ETYPE := [ TYPE \\| bridge_slave \\| bond_slave ]\n\n   TYPE := [ bridge \\| bond ]\n\nShows the state of all network interfaces on the system:\n\n.. code:: shell\n\n   ip link show\n\nShows the bridge devices:\n\n.. code:: shell\n\n   ip link show type bridge\n\nShows the vlan devices:\n\n.. code:: shell\n\n   ip link show type vlan\n\nShows devices enslaved by bridge0:\n\n.. code:: shell\n\n   ip link show master bridge0\n\nNote:\n^^^^^\n\n1. ``txqlen`` (the transmit queue length) is not configurable on\n   specific interface; a system default value is managed via\n   ``sysctl net.link.generic.system.sndq_maxlen`` (or\n   ``net.link.generic.system.rcvq_maxlen``).\n\n\n``ip link add``: add virtual link\n---------------------------------\n\nImplemented syntax:\n\n   ip link add [ link DEV ] [ name ] NAME [ address LLADDR ] [ mtu MTU ] type TYPE [ ARGS ]\n\nCreate a VLAN with TAG 100 linked to en1:\n\n.. code:: shell\n\n   ip link add link en1 name vlan100 type vlan id 100\n\nCreate a new bridge interface (auto numbering1):\n\n.. code:: shell\n\n   ip link add type bridge\n\nCreate a new bridge with a specified name:\n\n.. code:: shell\n\n   ip link add bridge20 type bridge\n\nCreate a new static bond (vs lacp) interface:\n\n.. code:: shell\n\n   ip link add bond1 type bond mode active-backup\n\nNote:\n^^^^^\n\n1. macOS ``ifconfig`` print the created interface name to the standard\n   output\n\n\n``ip link delete``: delete virtual link\n---------------------------------------\n\nImplemented syntax:\n\n   ip link delete { DEVICE \\| dev DEVICE } type TYPE [ ARGS ]\n\nDelete any kind of virtual interface:\n\n.. code:: shell\n\n   ip link del vlan100\n\n\n``ip link set`` (or ``change``): change device attributes\n---------------------------------------------------------\n\nImplemented syntax:\n\n\n``ip route show``: list routes\n------------------------------\n\nImplemented syntax:\n\n   ip route [ show [ SELECTOR ] ]\n\n   SELECTOR := [ proto RTPROTO ] [ type TYPE ] [ scope SCOPE ]\n\n   TYPE := { unicast \\| broadcast \\| multicast \\| blackhole }\n\n   SCOPE := [ host \\| link \\| global ]\n\n   RTPROTO := [ kernel \\| static ]\n\nList routes using a specific gateway:\n\n.. code:: shell\n\n   ip route show via 192.168.0.1\n\nList IPv6 routes using a specific network interface:\n\n.. code:: shell\n\n   ip -6 route show dev en1\n\nList routes for multicast:\n\n.. code:: shell\n\n   ip route show type multicast\n\nList availabe routes to reach specific network:\n\n.. code:: shell\n\n   ip route show to match 192.168.1.0/24\n\nList IPv4 and IPv6 routes2\n\n.. code:: shell\n\n   ip route show table all\n\nNote:\n^^^^^\n\n1. ``iif`` is not honored (is treated like ``dev`` and ``oif``).\n2. *Route tables* are not implemented in macOS (Darwin), but \u201ctable all\u201d\n   will result in show IPv4 + IPv6 routes\n\n\n``ip route add``: add new route\n-------------------------------\n\n\n``ip route delete``: delete route\n---------------------------------\n\n\n``ip route change``: change route\n---------------------------------\n\n\n``ip route replace``: change or add new one\n-------------------------------------------\n\nImplemented syntax:\n\n   ip route { add \\| delete \\| change \\| replace } ROUTE\n\n   ROUTE := [ TYPE ] PREFIX [ tos TOS ] [ proto RTPROTO ] [ scope SCOPE ]\n\n   TYPE := { unicast \\| broadcast \\| multicast \\| blackhole }\n\n   SCOPE := [ host \\| link \\| global ]\n\n   RTPROTO := [ kernel \\| boot \\| static ]\n\nAdd direct routing on a specific network interface:\n\n.. code:: shell\n\n   ip route add 192.168.22.0/24 dev en1\n\nChange interface for a given route:\n\n.. code:: shell\n\n   ip route change 192.168.22.0/24 dev en0\n\nReplace default gateway:\n\n.. code:: shell\n\n   ip route replace default via 192.168.0.254\n\nDelete route:\n\n.. code:: shell\n\n   ip route del 192.168.22.0/24\n\n\n``ip route get``: get a single route\n------------------------------------\n\nImplemented syntax:\n\n   ip route get ADDRESS\n\nShows the route to reach Google DNS 8.8.8.8:\n\n.. code:: shell\n\n   ip route get 8.8.8.8\n\n\n``ip neigh show``: list neighbour entries\n-----------------------------------------\n\nNote:\n^^^^^\n\n1. NOARP and PERMANENT states are not catched\n\n\n``ip neigh flush``: flush neighbour entries\n-------------------------------------------\n\nSame syntax of ``ip neigh show``\n\n\nContributing\n------------\n\nEvery contribute is welcome!\n\n\nFork the repository\n-------------------\n\n.. figure::\n   https://docs.github.com/assets/cb-34352/mw-1440/images/help/repository/fork-button.webp\n   :alt: Fork button\n\n   Fork button\n\n\nClone the fork\n--------------\n\n.. code:: shell\n\n   git clone https://github.com/YOUR-USERNAME/iproute4mac\n\n\nCreate a branch\n---------------\n\nBefore making changes to the project, you should create a new branch and\ncheck it out (see \u201c`GitHub\nflow <https://docs.github.com/en/get-started/using-github/github-flow#following-github-flow>`__\u201d).\n\n.. code:: shell\n\n   git branch BRANCH-NAME\n   git checkout BRANCH-NAME\n\n\nCreate a developer environment\n------------------------------\n\n.. code:: shell\n\n   python3 -m venv venv\n   source venv/bin/activate\n\nThen install requiered packages:\n\n.. code:: shell\n\n   python3 -m pip install -U pip\n   python3 -m pip install pre-commit pytest pytest-console-scripts\n   pre-commit install\n\n\nCoding style\n------------\n\n`Ruff <https://docs.astral.sh/ruff/>`__ is used to enforce coding style.\nYou can checkout the compliance with the following command:\n\n.. code:: shell\n\n   pre-commit run --all-files [--show-diff-on-failure]\n\n\nCommit your work\n----------------\n\nCreate as few commit as possible to make diff checking easier. In case\nof modification of already pushed commit, amend it if possible:\n\n.. code:: shell\n\n   git add -A\n   git commit --amend\n   git push --force\n\nIn case of multiple and not organic commits, \u201c`Squash and\nmerge <https://docs.github.com/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-commits>`__\u201d\npolicy will be applied.\n\n.. |CI| image:: https://github.com/signal-09/iproute4mac/actions/workflows/python-package.yml/badge.svg?branch=master\n   :target: https://github.com/signal-09/iproute4mac/actions/workflows/python-package.yml\n\n.. |PYPI| image:: https://img.shields.io/pypi/dm/iproute4mac\n   :target: https://pypi.org/project/iproute4mac/\n\n",
    "bugtrack_url": null,
    "license": "Apache License, Version 2.0",
    "summary": "iproute for Mac",
    "version": "0.5.7",
    "project_urls": {
        "Bug Reports": "https://github.com/signal-09/iproute4mac/issues",
        "Homepage": "https://github.com/signal-09/iproute4mac",
        "Source": "https://github.com/signal-09/iproute4mac"
    },
    "split_keywords": [
        "iproute2",
        " ip",
        " ifconfig"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5398caf205b889e9e61741483fd255f38fe2860e1c3edac989b59f1d67a21f03",
                "md5": "b3976a82f4c21c69293f3dc412348dfd",
                "sha256": "18a7d0c85390e1c02bc0a0046a5fb637ccd5291fc6673d129064f8944f166e10"
            },
            "downloads": -1,
            "filename": "iproute4mac-0.5.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b3976a82f4c21c69293f3dc412348dfd",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 109191,
            "upload_time": "2024-10-01T10:09:14",
            "upload_time_iso_8601": "2024-10-01T10:09:14.516675Z",
            "url": "https://files.pythonhosted.org/packages/53/98/caf205b889e9e61741483fd255f38fe2860e1c3edac989b59f1d67a21f03/iproute4mac-0.5.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f6bec00247d5af3d358082aa91f69c2b8848ede7286e455cf91b30d504c81860",
                "md5": "dbb22acb3b8a7a8c16e5c1192d6cc54b",
                "sha256": "12e55f81c322ef808886e3064fe54bebcc0b4cd5f6e3c677dfd3fb5b53563d7e"
            },
            "downloads": -1,
            "filename": "iproute4mac-0.5.7.tar.gz",
            "has_sig": false,
            "md5_digest": "dbb22acb3b8a7a8c16e5c1192d6cc54b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 104837,
            "upload_time": "2024-10-01T10:09:16",
            "upload_time_iso_8601": "2024-10-01T10:09:16.290705Z",
            "url": "https://files.pythonhosted.org/packages/f6/be/c00247d5af3d358082aa91f69c2b8848ede7286e455cf91b30d504c81860/iproute4mac-0.5.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-01 10:09:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "signal-09",
    "github_project": "iproute4mac",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "iproute4mac"
}
        
Elapsed time: 0.58794s