2021-06-04 13:56:03 +00:00
|
|
|
;;; SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
;;; SPDX-FileCopyrightText: Copyright © 2010-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
2021-06-01 15:19:24 +00:00
|
|
|
|
2018-05-06 14:09:06 +00:00
|
|
|
#lang racket/base
|
|
|
|
|
|
|
|
(provide (struct-out host-route)
|
|
|
|
(struct-out gateway-route)
|
|
|
|
(struct-out net-route)
|
|
|
|
|
|
|
|
(struct-out route-up))
|
|
|
|
|
|
|
|
;; A Route is one of
|
|
|
|
;; - (host-route IpAddrBytes NetmaskNat InterfaceName), an own-IP route
|
|
|
|
;; - (gateway-route NetAddrBytes NetmaskNat IpAddrBytes InterfaceName), a gateway for a subnet
|
|
|
|
;; - (net-route NetAddrBytes NetmaskNat InterfaceName), an ethernet route for a subnet
|
|
|
|
;; NetmaskNat in a net-route is a default route.
|
|
|
|
(struct host-route (ip-addr netmask interface-name) #:prefab)
|
|
|
|
(struct gateway-route (network-addr netmask gateway-addr interface-name) #:prefab)
|
|
|
|
(struct net-route (network-addr netmask link) #:prefab)
|
|
|
|
|
|
|
|
(struct route-up (route) #:prefab) ;; assertion: the given Route is running
|