Skip to content

Codebase overview

Michel Machado edited this page Mar 23, 2016 · 1 revision

This document explains the core data structures and functions in Linux XIA codebase, i.e., the skeleton of Linux XIA codebase. It's a start point for developers to be quickly familiar with Linux XIA. This documentation is useful for those who would like to implement their own data structures / algorithms to manage the FIBs, write new principals, etc. Basically, most of the source code about XIA are maintained in two directories: XIA-for-Linux/net/xia and XIA-for-Linux/include/net. For more detailed information, please refer to the source code.

Table of Contents

Overview of the codebase

  • xia.h: The definition of basic elements, such as XID, address, node, etc.
  • xia_dag.h: The definition of some basic functions for Principal Operations, such as name-type mapping, etc.
  • xia_lpm.h, xia_hid.h, xia_u4id.h, xia_xdp.h, etc.: The header files for different principals.
  • xia_fib.h, xia_list_fib.h, fib.c, list_fib.c: The data structures and functions for FIB maintenance. (Important)
  • xia_locktbl.h, locktbl.c : The definition of lock tables. Especially, the global variable- xia_main_lock_table.
  • xia_output.h, output.c: Define the operations for skbs of XIA. These functions allow us to construct a new skb and send it out.
  • xia_route.h, route.c: The definition of XIA header, DST, Route Routine, etc. (Important)
  • xia_socket.h, socket.c: Register a principal with XIA socket.
  • xia_vxidty.h, vxidty.c: Define Virtual IDs for principals. Supporting an efficient way to map XID types to loaded principals.
  • fib_frontend.c: Define the interfaces to interact with user space applications.
  • main.c: Init the XIA core functions.

Linux XIA core data structures - FIB hash table

Linux XIA generic data structures

Linux XIA core functions

Linux XIA AD principal

Clone this wiki locally