chiark / gitweb /
svc/conntrack: Add magic `down' peer tags.
authorMark Wooding <mdw@distorted.org.uk>
Fri, 22 Apr 2011 15:41:38 +0000 (16:41 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 22 Apr 2011 15:41:38 +0000 (16:41 +0100)
The tags `down' and `down/ANYTHING' mean that no peer from the group
should be selected.

svc/conntrack.8.in
svc/conntrack.in

index 3e4fc72..3d1a54a 100644 (file)
@@ -101,6 +101,14 @@ connecting the new one.  If no match is found in a particular group,
 then no peers in the group are connected.  Strange and unhelpful things
 will happen if you put the same peer in several different groups.
 .PP
 then no peers in the group are connected.  Strange and unhelpful things
 will happen if you put the same peer in several different groups.
 .PP
+The tags
+.B down
+and
+.BI down/ anything
+are special and mean that no peer from the group should be active.  This
+is useful for detecting a `home' network, where a VPN is unnecessary
+(or, worse, break routing completely).
+.PP
 The notion of `current IP address' is somewhat vague.  The
 .B conntrack
 service calculates it as the source address that the host would put on
 The notion of `current IP address' is somewhat vague.  The
 .B conntrack
 service calculates it as the source address that the host would put on
index 827598f..a743132 100644 (file)
@@ -253,7 +253,10 @@ def kickpeers():
         if upness and ip is None and \
               ipq is not None and (ipq & m) == a:
           map[t] = 'up'
         if upness and ip is None and \
               ipq is not None and (ipq & m) == a:
           map[t] = 'up'
-          want = t
+          if t == 'down' or t.startswith('down/'):
+            want = None
+          else:
+            want = t
           ip = ipq
         else:
           map[t] = 'down'
           ip = ipq
         else:
           map[t] = 'down'