From 63b71c2c9f140897f1597eb3223b50df96adf67a Mon Sep 17 00:00:00 2001
From: Michael Larson <slioch@slioch.vyatta.com>
Date: Thu, 19 Aug 2010 17:48:53 -0700
Subject: larkspur fix for bug 6069.

set first tmp file on first visitation. clean up other files in etc/commit hook.
---
 Makefile.am                         |  2 ++
 debian/vyatta-cfg-quagga.postinst   |  7 +++++++
 scripts/vyatta-asn-first-cleanup.pl | 34 ++++++++++++++++++++++++++++++++++
 templates/protocols/bgp/node.def    |  6 +++++-
 4 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 debian/vyatta-cfg-quagga.postinst
 create mode 100755 scripts/vyatta-asn-first-cleanup.pl

diff --git a/Makefile.am b/Makefile.am
index f6c04a85..50e67f34 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,4 @@
+commithookdir = /etc/commit
 share_perl5dir = /opt/vyatta/share/perl5/Vyatta/Quagga
 cfgdir = $(datadir)/vyatta-cfg/templates
 curverdir = $(sysconfdir)/config-migrate/current
@@ -10,6 +11,7 @@ sbin_SCRIPTS += scripts/policy/vyatta-check-as-prepend.pl
 sbin_SCRIPTS += scripts/vyatta-policy-action-verify.pl
 sbin_SCRIPTS += scripts/vyatta-gateway-static_route-check.pl
 sbin_SCRIPTS += scripts/vyatta-link-detect
+sbin_SCRIPTS += scripts/vyatta-asn-first-cleanup.pl
 
 sbin_PROGRAMS = src/check_prefix_boundary
 
diff --git a/debian/vyatta-cfg-quagga.postinst b/debian/vyatta-cfg-quagga.postinst
new file mode 100644
index 00000000..4e19570a
--- /dev/null
+++ b/debian/vyatta-cfg-quagga.postinst
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+mkdir -p /etc/commit
+ln -s /opt/vyatta/sbin/vyatta-asn-first-cleanup.pl /etc/commit/vyatta-asn-first-cleanup.pl 2>/dev/null
+
+exit 0
+
diff --git a/scripts/vyatta-asn-first-cleanup.pl b/scripts/vyatta-asn-first-cleanup.pl
new file mode 100755
index 00000000..cec82d7c
--- /dev/null
+++ b/scripts/vyatta-asn-first-cleanup.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+# Module: vyatta-asn-first-cleanup.pl
+#
+# **** License ****
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# A copy of the GNU General Public License is available as
+# `/usr/share/common-licenses/GPL' in the Debian GNU/Linux distribution
+# or on the World Wide Web at `http://www.gnu.org/copyleft/gpl.html'.
+# You can also obtain it by writing to the Free Software Foundation,
+# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+# This code was originally developed by Vyatta, Inc.
+# Portions created by Vyatta are Copyright (C) 2008 Vyatta, Inc.
+# All Rights Reserved.
+#
+# Author: Michael Larson
+# Date: June 2008
+# Description: Removes file at end of asn node visitation
+# **** End License ****
+
+use strict;
+use warnings;
+use lib "/opt/vyatta/share/perl5/";
+
+`rm -f /tmp/protocols-bgp.*`;
diff --git a/templates/protocols/bgp/node.def b/templates/protocols/bgp/node.def
index 3e9e6b51..44319838 100644
--- a/templates/protocols/bgp/node.def
+++ b/templates/protocols/bgp/node.def
@@ -7,4 +7,8 @@ val_help: u32:1-4294967294; AS number
 syntax:expression: $VAR(@) >= 1 && $VAR(@) <= 4294967294 ; \
 		   "AS number must be between 1 and 4294967294"
 
-end: /opt/vyatta/sbin/vyatta-bgp.pl --main
+end: 
+if [ ! -f "/tmp/protocols-bgp.$PPID" ]; then
+    touch /tmp/protocols-bgp.$PPID;
+    /opt/vyatta/sbin/vyatta-bgp.pl --main
+fi;
\ No newline at end of file
-- 
cgit v1.2.3