<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://alteeve.com/w/index.php?action=history&amp;feed=atom&amp;title=Fence_na.lib</id>
	<title>Fence na.lib - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://alteeve.com/w/index.php?action=history&amp;feed=atom&amp;title=Fence_na.lib"/>
	<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;action=history"/>
	<updated>2026-06-17T19:38:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=2003&amp;oldid=prev</id>
		<title>Digimer at 17:02, 25 August 2010</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=2003&amp;oldid=prev"/>
		<updated>2010-08-25T17:02:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:02, 25 August 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Version: 1.1.5&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Version: 1.1.5&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# This software is released under the GPL v2. See the LICENSE file for a copy&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# of the GPL v2.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key an_wiki-mediawiki-:diff:1.41:old-1831:rev-2003:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=1831&amp;oldid=prev</id>
		<title>Digimer at 15:36, 18 July 2010</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=1831&amp;oldid=prev"/>
		<updated>2010-07-18T15:36:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:36, 18 July 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Node Assassin - Fence Agent&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Node Assassin - Fence Agent&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Digimer; digimer@alteeve.com&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Digimer; digimer@alteeve.com&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Apr&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;08&lt;/del&gt;, 2010.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Jun&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;27&lt;/ins&gt;, 2010.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Version: 1.1.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Version: 1.1.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot;&gt;Line 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	# Process the orders.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	# Process the orders.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	print &quot;Processing: [$conf-&amp;gt;{&#039;system&#039;}{call_order}]\n&quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	foreach my $order (split/,/, $conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order})&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	foreach my $order (split/,/, $conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order})&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l330&quot;&gt;Line 330:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 331:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		# Fence all ports.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		# Fence all ports.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}=&amp;quot;fence_all&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}=&amp;quot;fence_all&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	elsif ($action eq &quot;boot&quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		# Boot the specific node if it is off.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$states=get_states($conf, $log);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		# Decide how, or if, to proceed based on the current state of&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		# each node.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$node=sprintf(&quot;%02d&quot;, $node);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		my $power_state=$states-&amp;gt;{$node}{power_state};&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		my $reset_state=$states-&amp;gt;{$node}{reset_state};&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		my $feed_state=$states-&amp;gt;{$node}{feed_state};&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		if (($power_state) || ($reset_state))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# Node was fenced, release first.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			$conf-&amp;gt;{&#039;system&#039;}{call_order}.=&quot;$node:0,sleep,&quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		if (not $feed_state)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# Boot the node.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			$conf-&amp;gt;{&#039;system&#039;}{call_order}.=&quot;$node:2,sleep,&quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		else&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			record($conf, $log, &quot;WARNING: Node: [$node] seems to be already on, taking no action.\n&quot;, 1);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$conf-&amp;gt;{&#039;system&#039;}{call_order}=~s/,$//;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	elsif ($action eq &amp;quot;boot_all&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	elsif ($action eq &amp;quot;boot_all&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l354&quot;&gt;Line 354:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 382:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}.=&amp;quot;$node:2,sleep,&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}.=&amp;quot;$node:2,sleep,&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$conf-&amp;gt;{&#039;system&#039;}{call_order}=~s/,$//;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	elsif ($action eq &quot;shutdown&quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		# Shutdown a specific node that is on cleanly via ACPI.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$states=get_states($conf, $log);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		$node=sprintf(&quot;%02d&quot;, $node);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		my $feed_state=$states-&amp;gt;{$node}{feed_state};&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		if ($feed_state)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# shutdown the node.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			$conf-&amp;gt;{&#039;system&#039;}{call_order}.=&quot;$node:2&quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		else&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			record($conf, $log, &quot;WARNING: Node: [$node] seems to be already off, taking no action. Is the cable connected?\n&quot;, 1);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}=~s/,$//;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}=~s/,$//;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l372&quot;&gt;Line 372:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 417:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			if ($feed_state)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			if ($feed_state)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				# &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Boot &lt;/del&gt;the node.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				# &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Shutdown &lt;/ins&gt;the node.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}.=&amp;quot;$node:2,sleep,&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}.=&amp;quot;$node:2,sleep,&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l484&quot;&gt;Line 484:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 529:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# Suppress all non-critical messages from STDOUT.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# Suppress all non-critical messages from STDOUT.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$conf-&amp;gt;{&amp;#039;system&amp;#039;}{quiet}=1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$conf-&amp;gt;{&amp;#039;system&amp;#039;}{quiet}=1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		elsif ($arg=~/-d/)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# Enable debug mode.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			$conf-&amp;gt;{&#039;system&#039;}{debug}=1;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		elsif ($arg=~/^-/)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		elsif ($arg=~/^-/)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l539&quot;&gt;Line 539:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 589:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# Bad argument.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# Bad argument.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			record($conf, $log, &amp;quot;\nERROR: Argument: [$arg] is not valid!\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			record($conf, $log, &amp;quot;\nERROR: Argument: [$arg] is not valid!\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			record($conf, $log, &quot;ERROR: Please run &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;./&lt;/del&gt;fence_na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--help&#039; &lt;/del&gt;to see a list of valid arguments.\n\n&quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			record($conf, $log, &quot;ERROR: Please run&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: [man &lt;/ins&gt;fence_na&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;] &lt;/ins&gt;to see a list of valid arguments.\n\n&quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$bad=1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$bad=1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l660&quot;&gt;Line 660:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 710:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# This sets the port number to act on.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# This sets the port number to act on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$conf-&amp;gt;{na}{port}=$value;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$conf-&amp;gt;{na}{port}=$value;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		elsif ($name eq &quot;nodename&quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# This is passed by &#039;fenced&#039; via &#039;cluster.conf&#039; as of&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# cluster version 3, but it&#039;s not yet documented.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			$conf-&amp;gt;{&#039;system&#039;}{nodename}=$value;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		elsif ($name eq &amp;quot;quiet&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		elsif ($name eq &amp;quot;quiet&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l666&quot;&gt;Line 666:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 722:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# custom argument to supress output to STDOUT.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			# custom argument to supress output to STDOUT.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$conf-&amp;gt;{&amp;#039;system&amp;#039;}{quiet}=1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$conf-&amp;gt;{&amp;#039;system&amp;#039;}{quiet}=1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			record($conf, $log, &amp;quot;\nERROR: Illegal name in option: [$option] at line: [$line_count]\n\n&amp;quot;, 1);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			record($conf, $log, &amp;quot;\nERROR: Illegal name in option: [$option] at line: [$line_count]\n\n&amp;quot;, 1);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$bad=1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &#039;rohara&#039; from #linux-cluster suggested it&#039;s better to&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# simply ignore unknown input, as that is the behaviour&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			# the fenced authors expect.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			#&lt;/ins&gt;$bad=1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key an_wiki-mediawiki-:diff:1.41:old-1366:rev-1831:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=1366&amp;oldid=prev</id>
		<title>Digimer at 14:17, 16 April 2010</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=1366&amp;oldid=prev"/>
		<updated>2010-04-16T14:17:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://alteeve.com/w/index.php?title=Fence_na.lib&amp;amp;diff=1366&amp;amp;oldid=1253&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=1253&amp;oldid=prev</id>
		<title>Digimer at 05:30, 7 April 2010</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=1253&amp;oldid=prev"/>
		<updated>2010-04-07T05:30:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://alteeve.com/w/index.php?title=Fence_na.lib&amp;amp;diff=1253&amp;amp;oldid=985&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=985&amp;oldid=prev</id>
		<title>Digimer at 19:53, 8 March 2010</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=985&amp;oldid=prev"/>
		<updated>2010-03-08T19:53:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://alteeve.com/w/index.php?title=Fence_na.lib&amp;amp;diff=985&amp;amp;oldid=977&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=977&amp;oldid=prev</id>
		<title>Digimer at 06:26, 8 March 2010</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=977&amp;oldid=prev"/>
		<updated>2010-03-08T06:26:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://alteeve.com/w/index.php?title=Fence_na.lib&amp;amp;diff=977&amp;amp;oldid=931&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=931&amp;oldid=prev</id>
		<title>Digimer: Created page with &#039;{{na_header}}  &#039;&#039;&#039;NOTE&#039;&#039;&#039;: The comments in this file need to be update, please don&#039;t trust them.  This is the fence agent&#039;s function library that exists in &lt;span class=&quot;code&quot;&gt;/et…&#039;</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=Fence_na.lib&amp;diff=931&amp;oldid=prev"/>
		<updated>2010-03-05T06:43:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;{{na_header}}  &amp;#039;&amp;#039;&amp;#039;NOTE&amp;#039;&amp;#039;&amp;#039;: The comments in this file need to be update, please don&amp;#039;t trust them.  This is the fence agent&amp;#039;s function library that exists in &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;/et…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Páàjì titun&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{na_header}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTE&amp;#039;&amp;#039;&amp;#039;: The comments in this file need to be update, please don&amp;#039;t trust them.&lt;br /&gt;
&lt;br /&gt;
This is the fence agent&amp;#039;s function library that exists in &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;/etc/na/&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
#&lt;br /&gt;
# This is the function library for the Node Assassin fence agent.&lt;br /&gt;
# &lt;br /&gt;
# Node Assassin - Fence Agent&lt;br /&gt;
# Digimer; digimer@alteeve.com&lt;br /&gt;
# Mar. 05, 2010.&lt;br /&gt;
# Version: 0.1.003&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# This cleanly exits the agent.&lt;br /&gt;
sub do_exit&lt;br /&gt;
{&lt;br /&gt;
	($conf, $log, $exit_status)=@_;&lt;br /&gt;
	$exit_status=9 if not defined $exit_status;&lt;br /&gt;
	&lt;br /&gt;
	$conf-&amp;gt;{node}{handle}-&amp;gt;close;&lt;br /&gt;
	$log-&amp;gt;close();&lt;br /&gt;
	exit ($exit_status);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# This returns the &amp;#039;help&amp;#039; message.&lt;br /&gt;
sub help&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log)=@_;&lt;br /&gt;
	my $msg=q`&lt;br /&gt;
NOTE: This is now out of date!&lt;br /&gt;
	&lt;br /&gt;
Node Assassin Fencing Agent&lt;br /&gt;
&lt;br /&gt;
	This program interfaces with the Node Assassin to set one or more nodes&lt;br /&gt;
	to one or more states.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
	./fence_na &amp;lt;options&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Overview:&lt;br /&gt;
&lt;br /&gt;
	This takes one or more arguments relating to the desired state to set a&lt;br /&gt;
	node to follow by one or more Node IDs to act on. Multiple states can&lt;br /&gt;
	be set at the same time.&lt;br /&gt;
&lt;br /&gt;
	When specifying a single node, pass a single ID (not zero-padded).&lt;br /&gt;
&lt;br /&gt;
	When specifying two or more nodes, seperate them with a comma with no&lt;br /&gt;
	spaces.&lt;br /&gt;
&lt;br /&gt;
States:&lt;br /&gt;
&lt;br /&gt;
	0&lt;br /&gt;
		This state will fence the nodes specified by the list.&lt;br /&gt;
	&lt;br /&gt;
	1&lt;br /&gt;
		This will release the fence and allow the specified node(s) to&lt;br /&gt;
		boot.&lt;br /&gt;
	&lt;br /&gt;
	2&lt;br /&gt;
		This will fence the node(s) for one second. This is meant to be&lt;br /&gt;
		used on ports connected to a node&amp;#039;s power button. If the node&lt;br /&gt;
		is alive and supports ACPI, this should start a graceful power&lt;br /&gt;
		down of the node. Conversly, if the node was off, this will&lt;br /&gt;
		boot the node. When connected to a node&amp;#039;s reset switch, this&lt;br /&gt;
		will cause a quick reboot without a graceful power off.&lt;br /&gt;
	&lt;br /&gt;
	3&lt;br /&gt;
		This state will fence the node(s) for five seconds. This is&lt;br /&gt;
		specifically designed for ports connected to a node&amp;#039;s power&lt;br /&gt;
		button. It will allow a frozen node to be forced off by holding&lt;br /&gt;
		the power button closed long enough to force a power off. This&lt;br /&gt;
		state serves no real difference over state 2 when connected to&lt;br /&gt;
		a reset switch.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
	In all cases, &amp;#039;--set_state_X=&amp;lt;list&amp;gt;&amp;#039; and &amp;#039;-X &amp;lt;list&amp;gt;&amp;#039; are equal and&lt;br /&gt;
	interchangable. The examples below will use the long-form arguments for&lt;br /&gt;
	the sake of clarity.&lt;br /&gt;
	&lt;br /&gt;
	--set_state_0=&amp;lt;list&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		This sets the specified port(s) state 0.&lt;br /&gt;
	&lt;br /&gt;
	--set_state_1=&amp;lt;list&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		This sets the specified port(s) state 0.&lt;br /&gt;
&lt;br /&gt;
	--set_state_2=&amp;lt;list&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		This sets the specified port(s) state 2.&lt;br /&gt;
	&lt;br /&gt;
	--set_state_2=&amp;lt;list&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		This sets the specified port(s) state 2.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
	Fence node 1.&lt;br /&gt;
	&lt;br /&gt;
		./fence_na --set_state_0=1&lt;br /&gt;
	&lt;br /&gt;
	Release the fence on node 1.&lt;br /&gt;
	&lt;br /&gt;
		./fence_na --set_state_1=1&lt;br /&gt;
	&lt;br /&gt;
	Boot nodes 1 and 2&lt;br /&gt;
	&lt;br /&gt;
		./fence_na --set_state_2=1,2&lt;br /&gt;
	&lt;br /&gt;
	Force node 2 to power off.&lt;br /&gt;
	&lt;br /&gt;
		./fence_na --set_state_3=2&lt;br /&gt;
	&lt;br /&gt;
	Fence nodes 4 and 5 then boot node 6&lt;br /&gt;
	&lt;br /&gt;
		./fence_na --set_state_0=4,5 --set_state_2=6&lt;br /&gt;
		&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
	An internal pager is not implemented. You may wish to run this via&lt;br /&gt;
	&amp;#039;less&amp;#039;:&lt;br /&gt;
	&lt;br /&gt;
	./fence_na | less&lt;br /&gt;
&lt;br /&gt;
NOTE: This is now out of date!&lt;br /&gt;
`;&lt;br /&gt;
	print $msg;&lt;br /&gt;
	&lt;br /&gt;
	do_exit($conf, $log, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# This handles the actual actions.&lt;br /&gt;
sub process_action&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log)=@_;&lt;br /&gt;
	&lt;br /&gt;
	# Make this more readable.&lt;br /&gt;
	my $na_id=$conf-&amp;gt;{&amp;#039;system&amp;#039;}{node_assassin_id};&lt;br /&gt;
	my $action=$conf-&amp;gt;{node}{action};&lt;br /&gt;
	my $port=$conf-&amp;gt;{node}{port};&lt;br /&gt;
	&lt;br /&gt;
	# Translate the port passed in by the fence agent into the actual ports&lt;br /&gt;
	# in the Node Assassin. Mapping is:&lt;br /&gt;
	# Node 01 -&amp;gt; Power = Port 01&lt;br /&gt;
	# Node 01 -&amp;gt; Reset = Port 02&lt;br /&gt;
	# Node 02 -&amp;gt; Power = Port 03&lt;br /&gt;
	# Node 02 -&amp;gt; Reset = Port 04&lt;br /&gt;
	# Node 03 -&amp;gt; Power = Port 05&lt;br /&gt;
	# Node 03 -&amp;gt; Reset = Port 06&lt;br /&gt;
	# Node 04 -&amp;gt; Power = Port 07&lt;br /&gt;
	# Node 04 -&amp;gt; Reset = Port 08&lt;br /&gt;
	# ...&lt;br /&gt;
	my $power_port=sprintf(&amp;quot;%02d&amp;quot;, (($port*2)-1));&lt;br /&gt;
	my $reset_port=sprintf(&amp;quot;%02d&amp;quot;, ($port*2));&lt;br /&gt;
	record($conf, $log, &amp;quot;Translated node port: [$port] to power port: [$power_port] and reset port: [$reset_port]\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	if ($action eq &amp;quot;on&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		# Release the fence and boot the node.&lt;br /&gt;
		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}=&amp;quot;$reset_port:1,$power_port:1,sleep,$power_port:2&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action eq &amp;quot;off&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		# Fence the node by pressing and holding the reset to make sure&lt;br /&gt;
		# the node immediately dies. Then I release the fence long&lt;br /&gt;
		# enough to force a power off, then I re-apply then fence to&lt;br /&gt;
		# make sure the node doesn&amp;#039;t come back up. This is needed&lt;br /&gt;
		# because some machines won&amp;#039;t power off if the reset is held&lt;br /&gt;
		# high when the power is pressed, even for &amp;gt; 4 seconds.&lt;br /&gt;
		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}=&amp;quot;$reset_port:0,sleep,$reset_port:1,sleep,$power_port:0,sleep 5,$reset_port:0&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action eq &amp;quot;reboot&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		# Currently, I don&amp;#039;t do this gracefully because, well, if it&amp;#039;s&lt;br /&gt;
		# being fenced, it&amp;#039;s not meant to be graceful.&lt;br /&gt;
		# This is a combination of the &amp;#039;off&amp;#039; -&amp;gt; &amp;#039;on&amp;#039; actions.&lt;br /&gt;
		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}=&amp;quot;$reset_port:0,sleep,$reset_port:1,sleep,$power_port:0,sleep 5,$reset_port:0&amp;quot;;&lt;br /&gt;
		$conf-&amp;gt;{&amp;#039;system&amp;#039;}{call_order}.=&amp;quot;,$reset_port:1,$power_port:1,sleep,$power_port:2&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	elsif ($action eq &amp;quot;status&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		# This should check the probe, but for now, it checks the&lt;br /&gt;
		# port&amp;#039;s state.&lt;br /&gt;
	}&lt;br /&gt;
	elsif (($action eq &amp;quot;monitor&amp;quot;) or ($action eq &amp;quot;list&amp;quot;))&lt;br /&gt;
	{&lt;br /&gt;
		# Not sure what to do here.&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		record($conf, $log, &amp;quot;Unknown action request: [$action]!\n&amp;quot;);&lt;br /&gt;
		do_exit($conf, $log, 9);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Read in the config file.&lt;br /&gt;
sub read_conf&lt;br /&gt;
{&lt;br /&gt;
	my ($conf)=@_;&lt;br /&gt;
	$conf={} if not $conf;&lt;br /&gt;
	&lt;br /&gt;
	# I can&amp;#039;t call the &amp;#039;record&amp;#039; method here because I&amp;#039;ve not read in the&lt;br /&gt;
	# log file and thus don&amp;#039;t know where to write the log to yet. Comment&lt;br /&gt;
	# out or delete &amp;#039;print&amp;#039; statements before release.&lt;br /&gt;
	my $read=IO::Handle-&amp;gt;new();&lt;br /&gt;
	my $shell_call=&amp;quot;$conf-&amp;gt;{&amp;#039;system&amp;#039;}{conf_file}&amp;quot;;&lt;br /&gt;
# 	print &amp;quot;Shell call: [$shell_call]\n&amp;quot;;&lt;br /&gt;
	open ($read, &amp;quot;&amp;lt;$shell_call&amp;quot;) or die &amp;quot;Failed to read: [$shell_call], error was: $!\n&amp;quot;;&lt;br /&gt;
	while (&amp;lt;$read&amp;gt;)&lt;br /&gt;
	{&lt;br /&gt;
		chomp;&lt;br /&gt;
		my $line=$_;&lt;br /&gt;
		next if not $line;&lt;br /&gt;
		next if $line !~ /=/;&lt;br /&gt;
		$line=~s/^\s+//;&lt;br /&gt;
		$line=~s/\s+$//;&lt;br /&gt;
		next if $line =~ /^#/;&lt;br /&gt;
		next if not $line;&lt;br /&gt;
		my ($var, $val)=(split/=/, $line, 2);&lt;br /&gt;
		$var=~s/^\s+//;&lt;br /&gt;
		$var=~s/\s+$//;&lt;br /&gt;
		$val=~s/^\s+//;&lt;br /&gt;
		$val=~s/\s+$//;&lt;br /&gt;
		next if (not $var);&lt;br /&gt;
# 		print &amp;quot;Storing: [$var] = [$val]\n&amp;quot;;&lt;br /&gt;
		_make_hash_reference($conf, $var, $val);&lt;br /&gt;
	}&lt;br /&gt;
	$read-&amp;gt;close();&lt;br /&gt;
	&lt;br /&gt;
	return (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Read in command line arguments&lt;br /&gt;
sub read_cla&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log, $bad)=@_;&lt;br /&gt;
	&lt;br /&gt;
	# MADI: Remove this before release.&lt;br /&gt;
	record($conf, $log, &amp;quot;Got args:\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	# Loop through the passed arguments, if any.&lt;br /&gt;
	my $set_next=&amp;quot;&amp;quot;;&lt;br /&gt;
	foreach my $arg (@ARGV)&lt;br /&gt;
	{&lt;br /&gt;
		# MADI: Remove this before release.&lt;br /&gt;
		record($conf, $log, &amp;quot;[$arg]\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		# If &amp;#039;set_next&amp;#039; has a value, push this argument into the &amp;#039;conf&amp;#039;&lt;br /&gt;
		# hash.&lt;br /&gt;
		if ($set_next)&lt;br /&gt;
		{&lt;br /&gt;
			# It&amp;#039;s set, use it&amp;#039;s contents as the hash key.&lt;br /&gt;
			$conf-&amp;gt;{node}{$set_next}=$arg;&lt;br /&gt;
			&lt;br /&gt;
			# MADI: Remove this before release.&lt;br /&gt;
			record($conf, $log, &amp;quot;Setting: &amp;#039;node::$set_next&amp;#039;: [$conf-&amp;gt;{node}{$set_next}]\n&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			# Clear it now for the next go-round.&lt;br /&gt;
			$set_next=&amp;quot;&amp;quot;;&lt;br /&gt;
			next;&lt;br /&gt;
		}&lt;br /&gt;
		if ($arg=~/-h/)&lt;br /&gt;
		{&lt;br /&gt;
			# Print the help message and then exit.&lt;br /&gt;
			help($conf, $log);&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($arg=~/-[vV]/)&lt;br /&gt;
		{&lt;br /&gt;
			# Print the version information and then exit.&lt;br /&gt;
			$conf-&amp;gt;{&amp;#039;system&amp;#039;}{version}=1;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($arg=~/-q/)&lt;br /&gt;
		{&lt;br /&gt;
			# Suppress all non-critical messages from STDOUT.&lt;br /&gt;
			$conf-&amp;gt;{&amp;#039;system&amp;#039;}{quiet}=1;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($arg=~/^-/)&lt;br /&gt;
		{&lt;br /&gt;
			$arg=~s/^-//;&lt;br /&gt;
			&lt;br /&gt;
			### These are the switches set by Red Hat.&lt;br /&gt;
			if ($set_next eq &amp;quot;a&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				# This is the IP address or hostname of the&lt;br /&gt;
				# Node Assassin to call.&lt;br /&gt;
				$set_next=&amp;quot;ipaddr&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			elsif ($set_next eq &amp;quot;l&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				# This is the login name.&lt;br /&gt;
				$set_next=&amp;quot;login&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			elsif ($set_next eq &amp;quot;p&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				# This is the password. If it starts with &amp;#039;/&amp;#039;&lt;br /&gt;
				# it is interpreted to be a file containing the&lt;br /&gt;
				# password which will be read in and it&amp;#039;s&lt;br /&gt;
				# contents will replace# this value.&lt;br /&gt;
				$set_next=&amp;quot;passwd&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			elsif ($set_next eq &amp;quot;n&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				# This is the node to work on.&lt;br /&gt;
				$set_next=&amp;quot;port&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			elsif ($set_next eq &amp;quot;o&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				# This is the action to take. Valid actions&lt;br /&gt;
				# are:&lt;br /&gt;
				# on      = ##:1		# Release fence&lt;br /&gt;
				# off     = ##:0		# Fence&lt;br /&gt;
				# reboot  = ##:3 -&amp;gt; ##:2	# Force off then boot.&lt;br /&gt;
				# status  = Returns the node&amp;#039;s current status.&lt;br /&gt;
				# monitor = Returns the status of all nodes.&lt;br /&gt;
				$set_next=&amp;quot;action&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			elsif ($set_next eq &amp;quot;S&amp;quot;)&lt;br /&gt;
			{&lt;br /&gt;
				# This is the script to run to retrieve the&lt;br /&gt;
				# password when it is not stored in&lt;br /&gt;
				# &amp;#039;cluster.conf&amp;#039;. This script should echo/print&lt;br /&gt;
				# the password to STDOUT.&lt;br /&gt;
				$set_next=&amp;quot;passwd_script&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			### MADI: I might want to pick up arguments via multiple lines.&lt;br /&gt;
			# Bad argument.&lt;br /&gt;
			record($conf, $log, &amp;quot;Argument: [$arg] is not valid!\n&amp;quot;);&lt;br /&gt;
			record($conf, $log, &amp;quot;Please run &amp;#039;./fence_na --help&amp;#039; to see a list of valid arguments.\n&amp;quot;);&lt;br /&gt;
			$bad=1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Read arguments from STDIN. This is adapted from the &amp;#039;fence_brocade&amp;#039; agent.&lt;br /&gt;
sub read_stdin&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log, $bad)=@_;&lt;br /&gt;
	&lt;br /&gt;
	my $option;&lt;br /&gt;
	my $line_count=0;&lt;br /&gt;
	while(defined (my $option=&amp;lt;&amp;gt;))&lt;br /&gt;
	{&lt;br /&gt;
		# Get rid of newlines.&lt;br /&gt;
		chomp $option;&lt;br /&gt;
		&lt;br /&gt;
		# Record the line for now, but comment this out before release.&lt;br /&gt;
		record ($conf, $log, &amp;quot;Processing option line: [$option]\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		# strip leading and trailing whitespace&lt;br /&gt;
		$option=~s/^\s*//;&lt;br /&gt;
		$option=~s/\s*$//;&lt;br /&gt;
		&lt;br /&gt;
		# skip comments&lt;br /&gt;
		next if ($option=~ /^#/);&lt;br /&gt;
		&lt;br /&gt;
		# Increment my option line count.&lt;br /&gt;
		$line_count++;&lt;br /&gt;
		&lt;br /&gt;
		# Go to the next line if the option line is empty.&lt;br /&gt;
		next if not $option;&lt;br /&gt;
		&lt;br /&gt;
		# Split the option up into the name and the value.&lt;br /&gt;
		($name,$value)=split /\s*=\s*/, $option;&lt;br /&gt;
		&lt;br /&gt;
		# Record the line for now, but comment this out before release.&lt;br /&gt;
		record ($conf, $log, &amp;quot;Name: [$name], value: [$value].\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		# Set my variables depending on the veriable name.&lt;br /&gt;
		if ($name eq &amp;quot;agent&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			# This is only used by &amp;#039;fenced&amp;#039;, but I record it for&lt;br /&gt;
			# potential debugging.&lt;br /&gt;
			$conf-&amp;gt;{node}{agent}=$value;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($name eq &amp;quot;fm&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			# This is a deprecated argument that should no longer&lt;br /&gt;
			# be used. Now &amp;#039;port&amp;#039; should be used.&lt;br /&gt;
			if (not $conf-&amp;gt;{node}{port})&lt;br /&gt;
			{&lt;br /&gt;
				# Port isn&amp;#039;t set yet, use this value which may&lt;br /&gt;
				# be replaced if &amp;#039;port&amp;#039; is set later.&lt;br /&gt;
				(undef, $value) = split /\s+/,$value;&lt;br /&gt;
				$conf-&amp;gt;{node}{port}=$value;&lt;br /&gt;
				warn &amp;quot;Warning! The argument &amp;#039;fm&amp;#039; is deprecated, use &amp;#039;port&amp;#039; instead. Value: [$value] set for &amp;#039;port&amp;#039;\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				# Port was already set, so simply ignore this.&lt;br /&gt;
				warn &amp;quot;Warning! The argument &amp;#039;fm&amp;#039; is deprecated, use &amp;#039;port&amp;#039; instead. Value: [$value] ignored.\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($name eq &amp;quot;ipaddr&amp;quot;) &lt;br /&gt;
		{&lt;br /&gt;
			# Record the IP Address or name of the Node Assassin to&lt;br /&gt;
			# use.&lt;br /&gt;
			$conf-&amp;gt;{node}{ipaddr}=$value;&lt;br /&gt;
		} &lt;br /&gt;
		elsif ($name eq &amp;quot;login&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			# Record the login name that was passed.&lt;br /&gt;
			$conf-&amp;gt;{node}{login}=$value;&lt;br /&gt;
		} &lt;br /&gt;
		elsif ($name eq &amp;quot;name&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			# Depricated argument used formerly for login name.&lt;br /&gt;
			if (not $conf-&amp;gt;{node}{login})&lt;br /&gt;
			{&lt;br /&gt;
				# Login isn&amp;#039;t set yet, use this value which may&lt;br /&gt;
				# be replaced if &amp;#039;login&amp;#039; is seen later.&lt;br /&gt;
				$conf-&amp;gt;{node}{login}=$value;&lt;br /&gt;
				warn &amp;quot;Warning! The argument &amp;#039;name&amp;#039; is deprecated, use &amp;#039;login&amp;#039; instead. Value: [$value] set for &amp;#039;login&amp;#039;.\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				# I&amp;#039;ve already seen the &amp;#039;login&amp;#039; value so I will&lt;br /&gt;
				# ignore this value.&lt;br /&gt;
				warn &amp;quot;Warning! The argument &amp;#039;name&amp;#039; is deprecated, use &amp;#039;login&amp;#039; instead. Value: [$value] ignored.\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		elsif (($name eq &amp;quot;action&amp;quot;) or ($name eq &amp;quot;option&amp;quot;))&lt;br /&gt;
		{&lt;br /&gt;
			# It looks like &amp;#039;option&amp;#039; is going to be deprecated in&lt;br /&gt;
			# favour of &amp;#039;action&amp;#039;. If/when that happens, add a warn.&lt;br /&gt;
			$conf-&amp;gt;{node}{action}=$value;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($name eq &amp;quot;passwd&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			# This is the login password.&lt;br /&gt;
			$conf-&amp;gt;{node}{passwd}=$value;&lt;br /&gt;
		} &lt;br /&gt;
		elsif ($name eq &amp;quot;passwd_script&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			# This is the path to the script that will return the&lt;br /&gt;
			# password to the agent. At this time, this is not&lt;br /&gt;
			# implemented.&lt;br /&gt;
			$conf-&amp;gt;{node}{passwd_script}=$value;&lt;br /&gt;
		}&lt;br /&gt;
		elsif ($name eq &amp;quot;port&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			# This sets the port number to act on.&lt;br /&gt;
			$conf-&amp;gt;{node}{port}=$value;&lt;br /&gt;
		} &lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			warn &amp;quot;Illegal name in option: [$option] at line: [$line_count]\n&amp;quot;;&lt;br /&gt;
			$bad=1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ($bad);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# This function simply prints messages to both the log and to stdout.&lt;br /&gt;
sub record&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log, $msg)=@_;&lt;br /&gt;
	&lt;br /&gt;
	print $log $msg;&lt;br /&gt;
	print $msg if not $conf-&amp;gt;{&amp;#039;system&amp;#039;}{quiet};&lt;br /&gt;
	&lt;br /&gt;
	return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# When asked to &amp;#039;monitor&amp;#039; or &amp;#039;list&amp;#039;, do this... whatever &amp;#039;this&amp;#039; is. All I know&lt;br /&gt;
# is that it should not generate output.&lt;br /&gt;
sub show_list&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log)=@_;&lt;br /&gt;
	&lt;br /&gt;
	### MADI: No idea what will be needed here, so here are both queries.&lt;br /&gt;
	###       Make them available elsewhere if not used here.&lt;br /&gt;
	record($conf, $log, &amp;quot;Checking states:\n&amp;quot;);&lt;br /&gt;
	my @state_out=$conf-&amp;gt;{node}{handle}-&amp;gt;cmd(&amp;quot;00:0&amp;quot;);&lt;br /&gt;
	foreach my $line (@state_out)&lt;br /&gt;
	{&lt;br /&gt;
# 		record($conf, $log, $line);&lt;br /&gt;
	}&lt;br /&gt;
	record($conf, $log, &amp;quot;Done.\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	# Query states and Node Assassin info.&lt;br /&gt;
	record($conf, $log, &amp;quot;Checking Node Assassin info:\n&amp;quot;);&lt;br /&gt;
	my @info_out=$conf-&amp;gt;{node}{handle}-&amp;gt;cmd(&amp;quot;00:1&amp;quot;);&lt;br /&gt;
	my $node_name=&amp;quot;&amp;quot;;&lt;br /&gt;
	foreach my $line (@info_out)&lt;br /&gt;
	{&lt;br /&gt;
		record($conf, $log, $line);&lt;br /&gt;
		$node_name=$1 if $line=~/- Node Name: ..... (.*)/;&lt;br /&gt;
	}&lt;br /&gt;
	record($conf, $log, &amp;quot;Node name: [$node_name]\n&amp;quot;);&lt;br /&gt;
	record($conf, $log, &amp;quot;Done.\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	do_exit($conf, $log, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# This queries the Node Assassin and returns the state of the requested node.&lt;br /&gt;
sub show_state&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log)=@_;&lt;br /&gt;
	&lt;br /&gt;
	my @state_out=$conf-&amp;gt;{node}{handle}-&amp;gt;cmd(&amp;quot;00:0&amp;quot;);&lt;br /&gt;
	my $state=&amp;quot;&amp;quot;;&lt;br /&gt;
	my $node=$conf-&amp;gt;{node}{port};&lt;br /&gt;
	foreach my $line (@state_out)&lt;br /&gt;
	{&lt;br /&gt;
		chomp;&lt;br /&gt;
		my $line=$_;&lt;br /&gt;
		my ($state)=($line=~/- Node $node: (.*?)/);&lt;br /&gt;
		if ($state)&lt;br /&gt;
		{&lt;br /&gt;
			$state=lc($state)=~/fenced/ ? 2 : 0;&lt;br /&gt;
			last;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	# No state means something went wrong while talking to the Node&lt;br /&gt;
	# Assassin.&lt;br /&gt;
	$state=1 if (($state != 0) &amp;amp;&amp;amp; ($state != 2));&lt;br /&gt;
	&lt;br /&gt;
	# As per: http://sources.redhat.com/cluster/wiki/FenceAgentAPI&lt;br /&gt;
	# The exit state must be:&lt;br /&gt;
	# 0 = Node is running&lt;br /&gt;
	# 1 = Failed to contact fence, unknown state.&lt;br /&gt;
	# 2 = Node is fenced.&lt;br /&gt;
	do_exit($conf, $log, $state);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# This prints the version information of this fence agent and of any configured&lt;br /&gt;
# fence devices.&lt;br /&gt;
sub version&lt;br /&gt;
{&lt;br /&gt;
	my ($conf, $log)=@_;&lt;br /&gt;
	&lt;br /&gt;
	# Print the Fence Agent version first.&lt;br /&gt;
	print &amp;quot;Fence Agent: ......... Node Assassin ver. $conf-&amp;gt;{&amp;#039;system&amp;#039;}{agent_version}\n&amp;quot;;&lt;br /&gt;
	print &amp;quot;Configured Nodes: .... $conf-&amp;gt;{&amp;#039;system&amp;#039;}{nodes}\n&amp;quot;;&lt;br /&gt;
	for my $node (1..$conf-&amp;gt;{&amp;#039;system&amp;#039;}{nodes})&lt;br /&gt;
	{&lt;br /&gt;
		print &amp;quot; - Node $node Name: .. $conf-&amp;gt;{node}{$node}{name}\n&amp;quot;;&lt;br /&gt;
		print &amp;quot; - Node $node IP: .... $conf-&amp;gt;{node}{$node}{ip}\n&amp;quot;;&lt;br /&gt;
		print &amp;quot; - Node $node Port: .. $conf-&amp;gt;{node}{$node}{port}\n&amp;quot;;&lt;br /&gt;
		print &amp;quot; - Node $node MAC: ... $conf-&amp;gt;{node}{$node}{mac}\n&amp;quot;;&lt;br /&gt;
		print &amp;quot; - Node $node Netmask: $conf-&amp;gt;{node}{$node}{ip}\n&amp;quot;;&lt;br /&gt;
		print &amp;quot; - Node $node Gateway: $conf-&amp;gt;{node}{$node}{ip}\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	do_exit($conf, $log, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
###############################################################################&lt;br /&gt;
# Private functions below here.                                               #&lt;br /&gt;
###############################################################################&lt;br /&gt;
&lt;br /&gt;
### Contributed by Shaun Fryer and Viktor Pavlenko by way of TPM.&lt;br /&gt;
# This is a helper to the above &amp;#039;_add_href&amp;#039; method. It is called each time a&lt;br /&gt;
# new string is to be created as a new hash key in the passed hash reference.&lt;br /&gt;
sub _add_hash_reference&lt;br /&gt;
{&lt;br /&gt;
	my $href1=shift;&lt;br /&gt;
	my $href2=shift;&lt;br /&gt;
	&lt;br /&gt;
	for my $key (keys %$href2)&lt;br /&gt;
	{&lt;br /&gt;
		if (ref $href1-&amp;gt;{$key} eq &amp;#039;HASH&amp;#039;)&lt;br /&gt;
		{&lt;br /&gt;
			_add_hash_reference($href1-&amp;gt;{$key}, $href2-&amp;gt;{$key});&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			$href1-&amp;gt;{$key}=$href2-&amp;gt;{$key};&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### Contributed by Shaun Fryer and Viktor Pavlenko by way of TPM.&lt;br /&gt;
# This takes a string with double-colon seperators and divides on those&lt;br /&gt;
# double-colons to create a hash reference where each element is a hash key.&lt;br /&gt;
sub _make_hash_reference&lt;br /&gt;
{&lt;br /&gt;
	my $href=shift;&lt;br /&gt;
	my $key_string=shift;&lt;br /&gt;
	my $value=shift;&lt;br /&gt;
# 	print &amp;quot;variable: [$key_string], value: [$value]\n&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	my $chomp_root=0;&lt;br /&gt;
	if ($chomp_root) { $key_string=~s/\w+:://; }&lt;br /&gt;
	&lt;br /&gt;
	my @keys = split /::/, $key_string;&lt;br /&gt;
	my $last_key = pop @keys;&lt;br /&gt;
	my $_href = {};&lt;br /&gt;
	$_href-&amp;gt;{$last_key}=$value;&lt;br /&gt;
	while (my $key = pop @keys)&lt;br /&gt;
	{&lt;br /&gt;
		my $elem = {};&lt;br /&gt;
		$elem-&amp;gt;{$key} = $_href;&lt;br /&gt;
		$_href = $elem;&lt;br /&gt;
	}&lt;br /&gt;
	_add_hash_reference($href, $_href);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{na_footer}}&lt;/div&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
</feed>