GithubHelp home page GithubHelp logo

ipmac's Introduction

ipmac netgraph node:

Stores (ip,mac) pairs in balanced binary tree (red-black)
for fast searching.

hooks:
in, match, mismatch, notfound, unknown

How it works:
Packets received on "in" hook are checked for ip/mac and forwarded to one of hooks:
match - if ip and mac matches
mismatch - ip found in tree, but mac not matches
notfound - ip not found in tree
unknown - unknown packet (proto is not ip, etc...)

Packets received on other hooks are discarded.

Usage example:

(vr0 - network interface)

mkpeer vr0: split lower mixed
name vr0:lower spl1
mkpeer vr0: split upper mixed
name vr0:upper spl2
connect spl1: spl2: in out

mkpeer spl2: one2many in one
name spl2:in o2m

mkpeer spl1: ipmac out in
name spl1:out ipmac
connect ipmac: o2m: match many1
connect ipmac: o2m: mismatch many2
connect ipmac: o2m: notfound many3
connect ipmac: o2m: unknown many4

Adding (ip,mac) pair:
msg ipmac: add { ip=1.2.3.4 mac=00:01:02:03:04:05 }

Statistics:
msg ipmac: stat

Clear internal tree:
msg ipmac: clear

ipmac's People

Contributors

gproskurin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.