Add cluster_port parameter for Multiple clusters 2.2.1.2fdn3.20
authorfendo <fendo@bi12info.com>
Fri, 26 May 2017 22:09:19 +0000 (00:09 +0200)
committerfendo <fendo@bi12info.com>
Fri, 26 May 2017 22:09:19 +0000 (00:09 +0200)
Docs/manual.html
Docs/manual/manual.xml
Docs/startup-config.5
Docs/startup-config.5.pod
cluster.c
debian/changelog
etc/startup-config.default
l2tpns.c
l2tpns.h

index 68b3759..060c470 100644 (file)
@@ -345,6 +345,11 @@ Multicast cluster address (default:  239.192.13.13).  See the section
 on <A HREF="#Clustering">Clustering</A> for more information.
 </LI>
 
+<LI><B>cluster_port</B> (int udp port)<BR>
+UDP cluster port (default: 32792).  See the section on
+<A HREF="#Clustering">Clustering</A> for more information.
+</LI>
+
 <LI><B>cluster_interface</B> (string)<BR>
 Interface for cluster packets (default: eth0).
 </LI>
@@ -1150,6 +1155,13 @@ A master, when determining that it has at least one up-to-date slave
 will drop all routes (raising them again if all slaves disappear) and
 subsequently handle only packets forwarded to it by the slaves.<P>
 
+*Configurable with <B>cluster_master_min_adv</B><P>
+
+Multiple clusters can be run on the same network by just using different
+multicast <B>cluster_address</B>. However, for a given host to be part
+of multiple clusters without mixing the clusters,
+<B>cluster_port</B> must be different for each cluster.<B>
+
 <H2 ID="Routing">Routing</H2>
 If you are running a single instance, you may simply statically route
 the IP pools to the <B>bind_address</B> (l2tpns will send a gratuitous
index 38e7b81..f2597c5 100644 (file)
@@ -592,6 +592,16 @@ set boolean true
          </listitem>
        </varlistentry>
 
+       <varlistentry>
+         <term><literal>cluster_port</literal> (udp port)</term>
+         <listitem>
+           <para>
+             UDP cluster port (default: 32792).
+             See <xref linkend="clustering"/> for more information.
+           </para>
+         </listitem>
+       </varlistentry>
+
        <varlistentry>
          <term><literal>cluster_interface</literal> (string)</term>
          <listitem>
@@ -2089,7 +2099,8 @@ iptables -t nat -L garden -nvx
     <para>
       An <command>l2tpns</command> cluster consists of one* or more
       servers configured with the same configuration, notably the
-      multicast <literal>cluster_address</literal>.
+      multicast <literal>cluster_address</literal> and the
+      <literal>cluster_port</literal>
     </para>
 
     <para>*A stand-alone server is simply a degraded cluster.</para>
@@ -2098,7 +2109,8 @@ iptables -t nat -L garden -nvx
       Initially servers come up as cluster slaves, and periodically
       (every <literal>cluster_hb_interval</literal>/10 seconds) send
       out ping packets containing the start time of the process to the
-      multicast <literal>cluster_address</literal>.
+      multicast <literal>cluster_address</literal> on
+      <literal>cluster_port</literal>.
     </para>
 
     <para>
@@ -2140,6 +2152,13 @@ iptables -t nat -L garden -nvx
     </para>
 
     <para>*Configurable with <literal>cluster_master_min_adv</literal></para>
+
+    <para>
+      Multiple clusters can be run on the same network by just using different
+      multicast <literal>cluster_address</literal>. However, for a given host to
+      be part of multiple clusters without mixing the clusters,
+      <literal>cluster_port</literal> must be different for each cluster.
+    </para>
   </sect1>
 
   <sect1 id="routing">
index e18c69f..4f1500a 100644 (file)
 .\" ========================================================================
 .\"
 .IX Title "STARTUP-CONFIG.5 1"
-.TH STARTUP-CONFIG.5 1 "2015-09-22" "perl v5.20.2" "User Contributed Perl Documentation"
+.TH STARTUP-CONFIG.5 1 "2017-05-26" "perl v5.20.2" "User Contributed Perl Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -199,6 +199,9 @@ example of use with 2 address:
 .IP "\fBcluster_address\fR (ip address)" 4
 .IX Item "cluster_address (ip address)"
 Multicast cluster address (default: 239.192.13.13). See the section on Clustering for more information.
+.IP "\fBBcluster_port\fR (int)" 4
+.IX Item "Bcluster_port (int)"
+\&\s-1UDP\s0 cluster port (default: 32792). See the section on Clustering for more information.
 .IP "\fBcluster_interface\fR (string)" 4
 .IX Item "cluster_interface (string)"
 Interface for cluster packets (default: eth0).
index f652dda..46a96c4 100644 (file)
@@ -80,6 +80,10 @@ B<set> I<bind_multi_address> "64.14.13.41, 64.14.13.42"
 
 Multicast cluster address (default: 239.192.13.13). See the section on Clustering for more information.
 
+=item B<Bcluster_port> (int)
+
+UDP cluster port (default: 32792). See the section on Clustering for more information.
+
 =item B<cluster_interface> (string)
 
 Interface for cluster packets (default: eth0).
index 26466be..d9b226f 100644 (file)
--- a/cluster.c
+++ b/cluster.c
@@ -98,7 +98,7 @@ int cluster_init()
 
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
-       addr.sin_port = htons(CLUSTERPORT);
+       addr.sin_port = htons(config->cluster_port);
        addr.sin_addr.s_addr = INADDR_ANY;
        setsockopt(cluster_sockfd, SOL_SOCKET, SO_REUSEADDR, &addr, sizeof(addr));
 
@@ -170,7 +170,7 @@ static int cluster_send_data(void *data, int datalen)
        if (!config->cluster_address) return 0;
 
        addr.sin_addr.s_addr = config->cluster_address;
-       addr.sin_port = htons(CLUSTERPORT);
+       addr.sin_port = htons(config->cluster_port);
        addr.sin_family = AF_INET;
 
        LOG(5, 0, 0, "Cluster send data: %d bytes\n", datalen);
@@ -253,7 +253,7 @@ static int peer_send_data(in_addr_t peer, uint8_t *data, int size)
                return -1;
 
        addr.sin_addr.s_addr = peer;
-       addr.sin_port = htons(CLUSTERPORT);
+       addr.sin_port = htons(config->cluster_port);
        addr.sin_family = AF_INET;
 
        LOG_HEX(5, "Peer send", data, size);
@@ -2247,6 +2247,7 @@ int cmd_show_cluster(struct cli_def *cli, const char *command, char **argv, int
        cli_print(cli, "My address       : %s", fmtaddr(my_address, 0));
        cli_print(cli, "VIP address      : %s", fmtaddr(config->bind_address, 0));
        cli_print(cli, "Multicast address: %s", fmtaddr(config->cluster_address, 0));
+       cli_print(cli, "UDP port         : %u", config->cluster_port);
        cli_print(cli, "Multicast i'face : %s", config->cluster_interface);
 
        if (!config->cluster_iam_master) {
index 4242297..34605d5 100644 (file)
@@ -1,3 +1,9 @@
+l2tpns (2.2.1.2fdn3.20) unstable; urgency=low
+
+  * Add cluster_port parameter for Multiple clusters (See clustering section for more informationc).
+
+ -- Fernando Alves <fendo@sameswifi.fr>  Fri, 26 May 2017 23:25:10 +0200
+
 l2tpns (2.2.1.2fdn3.19) unstable; urgency=low
 
   * New revision format.
index 7545160..fedfe5f 100644 (file)
@@ -93,6 +93,7 @@ set accounting_dir "/var/run/l2tpns/acct"
 
 # Cluster multicast address, interface
 #set cluster_address 239.192.13.13
+#set cluster_port 32792
 #set cluster_interface eth0
 
 # Cluster multicast TTL
index 1c50a3e..152c8ec 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -163,6 +163,7 @@ config_descriptt config_values[] = {
        CONFIG("icmp_rate", icmp_rate, INT),
        CONFIG("packet_limit", max_packets, INT),
        CONFIG("cluster_address", cluster_address, IPv4),
+       CONFIG("cluster_port", cluster_port, INT),
        CONFIG("cluster_interface", cluster_interface, STRING),
        CONFIG("cluster_mcast_ttl", cluster_mcast_ttl, INT),
        CONFIG("cluster_hb_interval", cluster_hb_interval, INT),
@@ -5628,6 +5629,7 @@ static void update_config()
        memcpy(config->old_plugins, config->plugins, sizeof(config->plugins));
        if (!config->multi_read_count) config->multi_read_count = 10;
        if (!config->cluster_address) config->cluster_address = inet_addr(DEFAULT_MCAST_ADDR);
+       if (!config->cluster_port) config->cluster_port = CLUSTERPORT;
        if (!*config->cluster_interface)
                strncpy(config->cluster_interface, DEFAULT_MCAST_INTERFACE, sizeof(config->cluster_interface) - 1);
 
index 7432a83..86cb664 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -731,6 +731,7 @@ typedef struct
        char            epdis_addr[20];                 // MP Endpoint Discriminator address
 
        in_addr_t       cluster_address;                // Multicast address of cluster.
+       unsigned short  cluster_port;                   // UDP port of cluster.
                                                        // Send to this address to have everyone hear.
        char            cluster_interface[64];          // Which interface to listen for multicast on.
        int             cluster_iam_master;             // Are we the cluster master???