-/* Used by netlink to deliver to site, and by site to deliver to netlink.
- cid is the client identifier returned by netlink_regnets_fn */
-typedef void netlink_deliver_fn(void *st, void *cid, struct buffer_if *buf);
-/* Register for packets from specified networks. Return value is client
- identifier. */
-typedef void *netlink_regnets_fn(void *st, struct subnet_list *networks,
- netlink_deliver_fn *deliver, void *dst,
- uint32_t max_start_pad, uint32_t max_end_pad);
+/* Used by netlink to deliver to site, and by site to deliver to
+ netlink. cid is the client identifier returned by
+ netlink_regnets_fn. If buf has size 0 then the function is just
+ being called for its site-effects (eg. making the site code attempt
+ to bring up a network link) */
+typedef void netlink_deliver_fn(void *st, struct buffer_if *buf);
+/* site code can tell netlink when outgoing packets will be dropped,
+ so netlink can generate appropriate ICMP and make routing decisions */
+#define LINK_QUALITY_DOWN 0 /* No chance of a packet being delivered */
+#define LINK_QUALITY_DOWN_STALE_ADDRESS 1 /* Link down, old address information */
+#define LINK_QUALITY_DOWN_CURRENT_ADDRESS 2 /* Link down, current address information */
+#define LINK_QUALITY_UP 3 /* Link active */
+#define MAXIMUM_LINK_QUALITY 3
+typedef void netlink_link_quality_fn(void *st, uint32_t quality);
+typedef void netlink_register_fn(void *st, netlink_deliver_fn *deliver,
+ void *dst, uint32_t max_start_pad,
+ uint32_t max_end_pad);