OSPFv2 Configuration

OSPFv2 component configuration is under the top level ospfv2 object in /etc/flockd/flockd.json

"ospfv2": {
    # RFC2328 1.2 Router ID
    # Optional: If not specified highest IPv4 Address is used.
    "router_id": "String in dotted decimal format"
    # Array of 'redistribute' objects
    "redistribute": [
        {
        # Origin of the Routes in the RIB to be redistributed
        "origin": ["kernel-static" | "kernel-connected"],
        # RFC2328 2.3 Type 1 / Type 2 external metrics
        "metric_type": [ 1 | 2 ],
        # OSPF metric to reach redistributed routes, from this router.
        # RFC2328 B. LSInfinity => 16777215
        "metric": ( 0..16777215 )
        },
    ],
    # OSPFv2 Area level configuration
    # -------------------------------
    [[area]] # Array of 'area' objects
    "area": [
        {
            # RFC2328 C.2 Area ID
            "area_id": "String in dotted decimal format",
            # OSPFv2 Interface level configuration
            # ------------------------------------
            "intf": [
                {
                # Specify the entire interface name i.e. "eno1"
                # or use ^ to match the start of interface names
                #   e.g. "^en" will match all interfaces that start with "en"
                "name": "Interface Name",
                # RFC2328 C.3 Interface output cost
                # Optional: Default is 10
                "cost": ( 1..65,535 ),
                # RFC2328 C.3 Router Priority
                # Optional: Default is 1
                "priority": ( 0..255 ),
                # RFC2328 C.3 HelloInterval
                # Optional: Default is 10s
                "hello_interval": ( 1..65,535 seconds),
                # RFC2328 C.3 RouterDeadInterval
                # Optional: Default is 40s
                "dead_interval": ( 1..65,535 seconds),
                }
            ]
        }
    ]
}

Example Exhaustive OSPFv2 Configuration

"ospfv2": {
    "router_id": "10.0.1.100",
    "redistribute": [
        {
            "metric": 100,
            "metric_type": 1,
            "origin": "kernel-static"
        },
        {
            "metric": 1000,
            "metric_type": 2,
            "origin": "kernel-connected"
        }
    ],
    "area": [
        {
            "area_id": "0.0.0.0",
            "intf": [
                {
                "cost": 20,
                "dead_interval": 4,
                "hello_interval": 1,
                "name": "enp7s0",
                "priority": 10
                },
                {
                "cost": 40,
                "dead_interval": 8,
                "hello_interval": 2,
                "name": "enp8s0",
                "priority": 20
                }
            ]
        },
        {
            "area_id": "0.0.0.1",
            "intf": [
                {
                "cost": 30,
                "dead_interval": 80,
                "hello_interval": 20,
                "name": "enp9s0",
                "priority": 30
                }
            ]
        }
    ]
}