Projet

Général

Profil

Révision 4c3d5d6b

ID4c3d5d6bf155f92a0e2d07ede69afbb520c21f80
Parent 51850192
Enfant e99080dc

Ajouté par Tim Meusel il y a plus d'un an

rules::mdns: Allow interface filtering

Voir les différences:

REFERENCE.md
779 779

  
780 780
* [`ipv4`](#-nftables--rules--mdns--ipv4)
781 781
* [`ipv6`](#-nftables--rules--mdns--ipv6)
782
* [`iifname`](#-nftables--rules--mdns--iifname)
782 783

  
783 784
##### <a name="-nftables--rules--mdns--ipv4"></a>`ipv4`
784 785

  
......
796 797

  
797 798
Default value: `true`
798 799

  
800
##### <a name="-nftables--rules--mdns--iifname"></a>`iifname`
801

  
802
Data type: `Array[String[1]]`
803

  
804
name for incoming interfaces to filter
805

  
806
Default value: `[]`
807

  
799 808
### <a name="nftables--rules--multicast"></a>`nftables::rules::multicast`
800 809

  
801 810
allow incoming multicast traffic
manifests/rules/mdns.pp
5 5
#   Allow mdns over IPv4
6 6
# @param ipv6
7 7
#   Allow mdns over IPv6
8
# @param iifname name for incoming interfaces to filter
9
#
8 10
class nftables::rules::mdns (
9 11
  Boolean $ipv4 = true,
10 12
  Boolean $ipv6 = true,
13
  Array[String[1]] $iifname = [],
11 14
) {
15
  if empty($iifname) {
16
    $_iifname = ''
17
  } else {
18
    $iifdata = $iifname.map |String[1] $interface| { "\"${interface}\"" }.join(', ')
19
    $_iifname = "iifname { ${iifdata} } "
20
  }
12 21
  if $ipv4 {
13 22
    nftables::rule { 'default_in-mdns_v4':
14
      content => 'ip daddr 224.0.0.251 udp dport 5353 accept',
23
      content => "${_iifname}ip daddr 224.0.0.251 udp dport 5353 accept",
15 24
    }
16 25
  }
17 26
  if $ipv6 {
18 27
    nftables::rule { 'default_in-mdns_v6':
19
      content => 'ip6 daddr ff02::fb udp dport 5353 accept',
28
      content => "${_iifname}ip6 daddr ff02::fb udp dport 5353 accept",
20 29
    }
21 30
  }
22 31
}
spec/classes/rules/mdns_spec.rb
1
# frozen_string_literal: true
2

  
3
require 'spec_helper'
4

  
5
describe 'nftables::rules::mdns' do
6
  on_supported_os.each do |os, os_facts|
7
    context "on #{os}" do
8
      let :facts do
9
        os_facts
10
      end
11

  
12
      context 'default options' do
13
        it { is_expected.to compile.with_all_deps }
14
        it { is_expected.to contain_nftables__rule('default_in-mdns_v4').with_content('ip daddr 224.0.0.251 udp dport 5353 accept') }
15
        it { is_expected.to contain_nftables__rule('default_in-mdns_v6').with_content('ip6 daddr ff02::fb udp dport 5353 accept') }
16
      end
17

  
18
      context 'with input interfaces set' do
19
        let :params do
20
          {
21
            iifname: %w[docker0 eth0],
22
          }
23
        end
24

  
25
        it { is_expected.to compile }
26
        it { is_expected.to contain_nftables__rule('default_in-mdns_v4').with_content('iifname { "docker0", "eth0" } ip daddr 224.0.0.251 udp dport 5353 accept') }
27
        it { is_expected.to contain_nftables__rule('default_in-mdns_v6').with_content('iifname { "docker0", "eth0" } ip6 daddr ff02::fb udp dport 5353 accept') }
28
      end
29
    end
30
  end
31
end

Formats disponibles : Unified diff