aboutsummaryrefslogtreecommitdiffstats
path: root/sysdep
diff options
context:
space:
mode:
authorJan Maria Matejka <mq@ucw.cz>2018-05-07 14:47:00 +0200
committerJan Maria Matejka <mq@ucw.cz>2018-05-29 12:35:06 +0200
commitee7e2ffd265fd76dbc8c94d9c2d48da54c27ff76 (patch)
tree7460254b1bd105e5bc45937e2e00aaac7da4ccf7 /sysdep
parentc3becfe1934da2dc2c0881a71eac8a26f810791f (diff)
downloadbird-ee7e2ffd265fd76dbc8c94d9c2d48da54c27ff76.tar.gz
Protocol: Introducing an enum protocol_class
This supersedes the EAP_* constants.
Diffstat (limited to 'sysdep')
-rw-r--r--sysdep/linux/krt-sys.h38
-rw-r--r--sysdep/linux/netlink.c2
-rw-r--r--sysdep/unix/krt.c3
-rw-r--r--sysdep/unix/krt.h4
4 files changed, 24 insertions, 23 deletions
diff --git a/sysdep/linux/krt-sys.h b/sysdep/linux/krt-sys.h
index 76ae29b7..2b8cdaa7 100644
--- a/sysdep/linux/krt-sys.h
+++ b/sysdep/linux/krt-sys.h
@@ -34,9 +34,9 @@ static inline struct ifa * kif_get_primary_ip(struct iface *i UNUSED) { return N
#define KRT_ALLOW_MERGE_PATHS 1
-#define EA_KRT_PREFSRC EA_CODE(EAP_KRT, 0x10)
-#define EA_KRT_REALM EA_CODE(EAP_KRT, 0x11)
-#define EA_KRT_SCOPE EA_CODE(EAP_KRT, 0x12)
+#define EA_KRT_PREFSRC EA_CODE(PROTOCOL_KERNEL, 0x10)
+#define EA_KRT_REALM EA_CODE(PROTOCOL_KERNEL, 0x11)
+#define EA_KRT_SCOPE EA_CODE(PROTOCOL_KERNEL, 0x12)
#define KRT_METRICS_MAX 0x10 /* RTAX_QUICKACK+1 */
@@ -48,22 +48,22 @@ static inline struct ifa * kif_get_primary_ip(struct iface *i UNUSED) { return N
* Following attributes are parts of RTA_METRICS kernel route attribute, their
* ids must be consistent with their RTAX_* constants (+ KRT_METRICS_OFFSET)
*/
-#define EA_KRT_METRICS EA_CODE(EAP_KRT, 0x20) /* Dummy one */
-#define EA_KRT_LOCK EA_CODE(EAP_KRT, 0x21)
-#define EA_KRT_MTU EA_CODE(EAP_KRT, 0x22)
-#define EA_KRT_WINDOW EA_CODE(EAP_KRT, 0x23)
-#define EA_KRT_RTT EA_CODE(EAP_KRT, 0x24)
-#define EA_KRT_RTTVAR EA_CODE(EAP_KRT, 0x25)
-#define EA_KRT_SSTRESH EA_CODE(EAP_KRT, 0x26)
-#define EA_KRT_CWND EA_CODE(EAP_KRT, 0x27)
-#define EA_KRT_ADVMSS EA_CODE(EAP_KRT, 0x28)
-#define EA_KRT_REORDERING EA_CODE(EAP_KRT, 0x29)
-#define EA_KRT_HOPLIMIT EA_CODE(EAP_KRT, 0x2a)
-#define EA_KRT_INITCWND EA_CODE(EAP_KRT, 0x2b)
-#define EA_KRT_FEATURES EA_CODE(EAP_KRT, 0x2c)
-#define EA_KRT_RTO_MIN EA_CODE(EAP_KRT, 0x2d)
-#define EA_KRT_INITRWND EA_CODE(EAP_KRT, 0x2e)
-#define EA_KRT_QUICKACK EA_CODE(EAP_KRT, 0x2f)
+#define EA_KRT_METRICS EA_CODE(PROTOCOL_KERNEL, 0x20) /* Dummy one */
+#define EA_KRT_LOCK EA_CODE(PROTOCOL_KERNEL, 0x21)
+#define EA_KRT_MTU EA_CODE(PROTOCOL_KERNEL, 0x22)
+#define EA_KRT_WINDOW EA_CODE(PROTOCOL_KERNEL, 0x23)
+#define EA_KRT_RTT EA_CODE(PROTOCOL_KERNEL, 0x24)
+#define EA_KRT_RTTVAR EA_CODE(PROTOCOL_KERNEL, 0x25)
+#define EA_KRT_SSTRESH EA_CODE(PROTOCOL_KERNEL, 0x26)
+#define EA_KRT_CWND EA_CODE(PROTOCOL_KERNEL, 0x27)
+#define EA_KRT_ADVMSS EA_CODE(PROTOCOL_KERNEL, 0x28)
+#define EA_KRT_REORDERING EA_CODE(PROTOCOL_KERNEL, 0x29)
+#define EA_KRT_HOPLIMIT EA_CODE(PROTOCOL_KERNEL, 0x2a)
+#define EA_KRT_INITCWND EA_CODE(PROTOCOL_KERNEL, 0x2b)
+#define EA_KRT_FEATURES EA_CODE(PROTOCOL_KERNEL, 0x2c)
+#define EA_KRT_RTO_MIN EA_CODE(PROTOCOL_KERNEL, 0x2d)
+#define EA_KRT_INITRWND EA_CODE(PROTOCOL_KERNEL, 0x2e)
+#define EA_KRT_QUICKACK EA_CODE(PROTOCOL_KERNEL, 0x2f)
/* Bits of EA_KRT_LOCK, also based on RTAX_* constants */
#define EA_KRT_LOCK_MTU EA_KRT_LOCK | EA_BIT(0x2)
diff --git a/sysdep/linux/netlink.c b/sysdep/linux/netlink.c
index 84591eb2..f5db1575 100644
--- a/sysdep/linux/netlink.c
+++ b/sysdep/linux/netlink.c
@@ -1751,7 +1751,7 @@ nl_parse_route(struct nl_parse_state *s, struct nlmsghdr *h)
for (t = 1; t < KRT_METRICS_MAX; t++)
if (metrics[0] & (1 << t))
{
- ea->attrs[n].id = EA_CODE(EAP_KRT, KRT_METRICS_OFFSET + t);
+ ea->attrs[n].id = EA_CODE(PROTOCOL_KERNEL, KRT_METRICS_OFFSET + t);
ea->attrs[n].flags = 0;
ea->attrs[n].type = EAF_TYPE_INT; /* FIXME: Some are EAF_TYPE_BITFIELD */
ea->attrs[n].u.data = metrics[t];
diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c
index b4fb1967..ae51927e 100644
--- a/sysdep/unix/krt.c
+++ b/sysdep/unix/krt.c
@@ -232,6 +232,7 @@ kif_copy_config(struct proto_config *dest, struct proto_config *src)
struct protocol proto_unix_iface = {
.name = "Device",
.template = "device%d",
+ .class = PROTOCOL_DEVICE,
.proto_size = sizeof(struct kif_proto),
.config_size = sizeof(struct kif_config),
.preconfig = kif_preconfig,
@@ -1235,7 +1236,7 @@ krt_get_attr(eattr *a, byte *buf, int buflen)
struct protocol proto_unix_kernel = {
.name = "Kernel",
.template = "kernel%d",
- .attr_class = EAP_KRT,
+ .class = PROTOCOL_KERNEL,
.preference = DEF_PREF_INHERITED,
.channel_mask = NB_IP | MAYBE_IP6_SADR | MAYBE_MPLS,
.proto_size = sizeof(struct krt_proto),
diff --git a/sysdep/unix/krt.h b/sysdep/unix/krt.h
index b627882d..ff27bcf5 100644
--- a/sysdep/unix/krt.h
+++ b/sysdep/unix/krt.h
@@ -30,8 +30,8 @@ struct kif_proto;
#define KRT_DEFAULT_ECMP_LIMIT 16
-#define EA_KRT_SOURCE EA_CODE(EAP_KRT, 0)
-#define EA_KRT_METRIC EA_CODE(EAP_KRT, 1)
+#define EA_KRT_SOURCE EA_CODE(PROTOCOL_KERNEL, 0)
+#define EA_KRT_METRIC EA_CODE(PROTOCOL_KERNEL, 1)
/* Whenever we recognize our own routes, we allow learing of foreign routes */