private function addFirewallSection()
    {
    	$tree = new TreeBuilder();
    	$node = $tree->root('firewall');
    
    	$node
            ->children()
                ->scalarNode('pool')->isRequired()->end()
                ->scalarNode('prefix')->defaultValue('lmbf')->end()
                ->scalarNode('concurrency')
                    ->defaultValue(10)
                    ->validate()
                    ->ifTrue(function ($v) { return !is_numeric($v); })
                        ->thenInvalid('concurrency must be numeric')
                    ->end()
                ->end()
                ->scalarNode('spin_lock_wait')
                    ->defaultValue(150000)
                    ->validate()
                    ->ifTrue(function ($v) { return !is_numeric($v); })
                        ->thenInvalid('spin_lock_wait must be numeric')
                	->end()
                ->end()
                ->scalarNode('lock_max_wait')
                    ->defaultValue(300)
                    ->validate()
                    ->ifTrue(function ($v) { return !is_numeric($v); })
                        ->thenInvalid('lock_max_wait must be numeric')
                    ->end()
                ->end()
                ->arrayNode('reverse_proxies')
                    ->defaultValue(array())
                    ->prototype('scalar')->end()
                ->end()
                ->scalarNode('x_forwarded_for')->defaultFalse()->end()
            ->end()
        ->end();
    	
    	return $node;
    }