summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2016-09-15 03:37:09 +0000
committerdlg <dlg@openbsd.org>2016-09-15 03:37:09 +0000
commit26cf9ad79b847483fdbe18d2e92aa52fbe56982f (patch)
tree0a3cbe0747a90a87938f59cf580bd4529c32d077
parentmove from RB macros to the RBT functions. (diff)
downloadwireguard-openbsd-26cf9ad79b847483fdbe18d2e92aa52fbe56982f.tar.xz
wireguard-openbsd-26cf9ad79b847483fdbe18d2e92aa52fbe56982f.zip
move from RB macros to RBT functions
shaves a bunch of bytes off kernels
-rw-r--r--sys/netinet/ip_ipsp.c34
-rw-r--r--sys/netinet/ip_ipsp.h10
2 files changed, 23 insertions, 21 deletions
diff --git a/sys/netinet/ip_ipsp.c b/sys/netinet/ip_ipsp.c
index 499b958811e..5fad2df2172 100644
--- a/sys/netinet/ip_ipsp.c
+++ b/sys/netinet/ip_ipsp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip_ipsp.c,v 1.214 2015/05/23 12:38:53 markus Exp $ */
+/* $OpenBSD: ip_ipsp.c,v 1.215 2016/09/15 03:37:09 dlg Exp $ */
/*
* The authors of this code are John Ioannidis (ji@tla.org),
* Angelos D. Keromytis (kermit@csd.uch.gr),
@@ -98,12 +98,14 @@ struct ipsec_ids_tree ipsec_ids_tree;
struct ipsec_ids_flows ipsec_ids_flows;
void ipsp_ids_timeout(void *);
-static int ipsp_ids_cmp(struct ipsec_ids *, struct ipsec_ids *);
-static int ipsp_ids_flow_cmp(struct ipsec_ids *, struct ipsec_ids *);
-RB_PROTOTYPE(ipsec_ids_tree, ipsec_ids, id_node_flow, ipsp_ids_cmp);
-RB_PROTOTYPE(ipsec_ids_flows, ipsec_ids, id_node_id, ipsp_ids_flow_cmp);
-RB_GENERATE(ipsec_ids_tree, ipsec_ids, id_node_flow, ipsp_ids_cmp);
-RB_GENERATE(ipsec_ids_flows, ipsec_ids, id_node_id, ipsp_ids_flow_cmp);
+static inline int ipsp_ids_cmp(const struct ipsec_ids *,
+ const struct ipsec_ids *);
+static inline int ipsp_ids_flow_cmp(const struct ipsec_ids *,
+ const struct ipsec_ids *);
+RBT_PROTOTYPE(ipsec_ids_tree, ipsec_ids, id_node_flow, ipsp_ids_cmp);
+RBT_PROTOTYPE(ipsec_ids_flows, ipsec_ids, id_node_id, ipsp_ids_flow_cmp);
+RBT_GENERATE(ipsec_ids_tree, ipsec_ids, id_node_flow, ipsp_ids_cmp);
+RBT_GENERATE(ipsec_ids_flows, ipsec_ids, id_node_id, ipsp_ids_flow_cmp);
/*
* This is the proper place to define the various encapsulation transforms.
@@ -905,7 +907,7 @@ ipsp_ids_insert(struct ipsec_ids *ids)
struct ipsec_ids *found;
u_int32_t start_flow;
- found = RB_INSERT(ipsec_ids_tree, &ipsec_ids_tree, ids);
+ found = RBT_INSERT(ipsec_ids_tree, &ipsec_ids_tree, ids);
if (found) {
/* if refcount was zero, then timeout is running */
if (found->id_refcount++ == 0)
@@ -917,7 +919,7 @@ ipsp_ids_insert(struct ipsec_ids *ids)
ids->id_flow = start_flow = ipsec_ids_next_flow;
if (++ipsec_ids_next_flow == 0)
ipsec_ids_next_flow = 1;
- while (RB_INSERT(ipsec_ids_flows, &ipsec_ids_flows, ids) != NULL) {
+ while (RBT_INSERT(ipsec_ids_flows, &ipsec_ids_flows, ids) != NULL) {
ids->id_flow = ipsec_ids_next_flow;
if (++ipsec_ids_next_flow == 0)
ipsec_ids_next_flow = 1;
@@ -939,7 +941,7 @@ ipsp_ids_lookup(u_int32_t ipsecflowinfo)
struct ipsec_ids key;
key.id_flow = ipsecflowinfo;
- return RB_FIND(ipsec_ids_flows, &ipsec_ids_flows, &key);
+ return RBT_FIND(ipsec_ids_flows, &ipsec_ids_flows, &key);
}
/* free ids only from delayed timeout */
@@ -952,8 +954,8 @@ ipsp_ids_timeout(void *arg)
DPRINTF(("%s: ids %p count %d\n", __func__, ids, ids->id_refcount));
KASSERT(ids->id_refcount == 0);
s = splsoftnet();
- RB_REMOVE(ipsec_ids_tree, &ipsec_ids_tree, ids);
- RB_REMOVE(ipsec_ids_flows, &ipsec_ids_flows, ids);
+ RBT_REMOVE(ipsec_ids_tree, &ipsec_ids_tree, ids);
+ RBT_REMOVE(ipsec_ids_flows, &ipsec_ids_flows, ids);
free(ids->id_local, M_CREDENTIALS, 0);
free(ids->id_remote, M_CREDENTIALS, 0);
free(ids, M_CREDENTIALS, 0);
@@ -988,8 +990,8 @@ ipsp_id_cmp(struct ipsec_id *a, struct ipsec_id *b)
return memcmp(a + 1, b + 1, a->len);
}
-static int
-ipsp_ids_cmp(struct ipsec_ids *a, struct ipsec_ids *b)
+static inline int
+ipsp_ids_cmp(const struct ipsec_ids *a, const struct ipsec_ids *b)
{
int ret;
@@ -999,8 +1001,8 @@ ipsp_ids_cmp(struct ipsec_ids *a, struct ipsec_ids *b)
return ipsp_id_cmp(a->id_local, b->id_local);
}
-static int
-ipsp_ids_flow_cmp(struct ipsec_ids *a, struct ipsec_ids *b)
+static inline int
+ipsp_ids_flow_cmp(const struct ipsec_ids *a, const struct ipsec_ids *b)
{
if (a->id_flow > b->id_flow)
return 1;
diff --git a/sys/netinet/ip_ipsp.h b/sys/netinet/ip_ipsp.h
index c62bc32af3e..efec84a35c7 100644
--- a/sys/netinet/ip_ipsp.h
+++ b/sys/netinet/ip_ipsp.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip_ipsp.h,v 1.173 2015/12/03 13:12:20 tedu Exp $ */
+/* $OpenBSD: ip_ipsp.h,v 1.174 2016/09/15 03:37:09 dlg Exp $ */
/*
* The authors of this code are John Ioannidis (ji@tla.org),
* Angelos D. Keromytis (kermit@csd.uch.gr),
@@ -166,16 +166,16 @@ struct ipsec_id {
};
struct ipsec_ids {
- RB_ENTRY(ipsec_ids) id_node_id;
- RB_ENTRY(ipsec_ids) id_node_flow;
+ RBT_ENTRY(ipsec_ids) id_node_id;
+ RBT_ENTRY(ipsec_ids) id_node_flow;
struct ipsec_id *id_local;
struct ipsec_id *id_remote;
u_int32_t id_flow;
int id_refcount;
struct timeout id_timeout;
};
-RB_HEAD(ipsec_ids_flows, ipsec_ids);
-RB_HEAD(ipsec_ids_tree, ipsec_ids);
+RBT_HEAD(ipsec_ids_flows, ipsec_ids);
+RBT_HEAD(ipsec_ids_tree, ipsec_ids);
struct ipsec_acquire {
union sockaddr_union ipa_addr;