summaryrefslogtreecommitdiff
path: root/sysutils/pftop/files/extra-patch-cache.c
blob: 8a345a3f3d8bef1c93a2ca754dc3e8983203ce3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Adjusted to work with the changes in r240233.
$OpenBSD: patch-cache_c,v 1.1 2008/06/13 00:38:12 canacar Exp $
--- cache.c.orig	Tue Nov  6 23:34:18 2007
+++ cache.c	Wed Jun 11 19:50:07 2008
@@ -118,12 +118,21 @@
 
 	cache_size--;
 
+#ifdef HAVE_PFSYNC_STATE
+#ifdef HAVE_FINE_GRAINED_LOCKING
+	ent->id = st->id;
+#else
+	ent->id[0] = st->id[0];
+	ent->id[1] = st->id[1];
+#endif
+#else
 	ent->addr[0] = st->lan.addr;
 	ent->port[0] = st->lan.port;
 	ent->addr[1] = st->ext.addr;
 	ent->port[1] = st->ext.port;
 	ent->af = st->af;
 	ent->proto = st->proto;
+#endif
 #ifdef HAVE_INOUT_COUNT
 	ent->bytes = COUNTER(st->bytes[0]) + COUNTER(st->bytes[1]);
 #else
@@ -147,13 +156,21 @@
 	if (cache_max == 0)
 		return (NULL);
 
+#ifdef HAVE_PFSYNC_STATE
+#ifdef HAVE_FINE_GRAINED_LOCKING
+	ent.id = st->id;
+#else
+	ent.id[0] = st->id[0];
+	ent.id[1] = st->id[1];
+#endif
+#else
 	ent.addr[0] = st->lan.addr;
 	ent.port[0] = st->lan.port;
 	ent.addr[1] = st->ext.addr;
 	ent.port[1] = st->ext.port;
 	ent.af = st->af;
 	ent.proto = st->proto;
-
+#endif
 	old = RB_FIND(sc_tree, &sctree, &ent);
 
 	if (old == NULL) {
@@ -210,8 +227,25 @@
 static __inline int
 sc_cmp(struct sc_ent *a, struct sc_ent *b)
 {
+#ifdef HAVE_PFSYNC_STATE
+#ifdef HAVE_FINE_GRAINED_LOCKING
+	if (a->id > b->id)
+		return (1);
+	if (a->id < b->id)
+		return (-1);
+#else
+	if (a->id[0] > b->id[0])
+		return (1);
+	if (a->id[0] < b->id[0])
+		return (-1);
+	if (a->id[1] > b->id[1])
+		return (1);
+	if (a->id[1] < b->id[1])
+		return (-1);
+#endif
+#else	
        	int diff;
-	
+
 	if ((diff = a->proto - b->proto) != 0)
 		return (diff);
 	if ((diff = a->af - b->af) != 0)
@@ -269,6 +303,6 @@
 		return (diff);
 	if ((diff = a->port[1] - b->port[1]) != 0)
 		return (diff);
-
+#endif
 	return (0);
 }