Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / manifests / simplerule.pp @ d43ced4d

Historique | Voir | Annoter | Télécharger (1,49 ko)

1
# This class is meant to be useful to ease the migration from the Firewall type
2
# for simple use cases. The coverage of all the casuistry is rather low so for
3
# any case not covered by nftables::simplerule please just use nftables::rule.
4
define nftables::simplerule(
5
  Enum['present','absent']
6
    $ensure = 'present',
7
  Pattern[/^[-a-zA-Z0-9_]+$/]
8
    $rulename = $title,
9
  Pattern[/^\d\d$/]
10
    $order = '50',
11
  String
12
    $chain  = 'default_in',
13
  Optional[String]
14
    $table = 'inet-filter',
15
  Enum['accept', 'drop']
16
    $action = 'accept',
17
  Optional[String]
18
    $comment = undef,
19
  Optional[Variant[Array[Stdlib::Port, 1], Stdlib::Port, Pattern[/\d+-\d+/]]]
20
    $dport  = undef,
21
  Optional[Enum['tcp', 'tcp4', 'tcp6', 'udp', 'udp4', 'udp6']]
22
    $proto  = undef,
23
  Optional[Variant[Stdlib::IP::Address::V6, Stdlib::IP::Address::V4, Pattern[/^@[-a-zA-Z0-9_]+$/]]]
24
    $daddr = undef,
25
  Enum['ip', 'ip6']
26
    $set_type = 'ip6',
27
  Boolean
28
    $counter = false,
29
){
30

    
31
  if $dport and !$proto {
32
    fail('Specifying a transport protocol via $proto is mandatory when passing a port')
33
  }
34

    
35
  if $ensure == 'present' {
36
    nftables::rule{"${chain}-${rulename}":
37
      content => epp('nftables/simplerule.epp',
38
        {
39
          'action'   => $action,
40
          'comment'  => $comment,
41
          'counter'  => $counter,
42
          'dport'    => $dport,
43
          'proto'    => $proto,
44
          'daddr'    => $daddr,
45
          'set_type' => $set_type,
46
        }
47
      ),
48
      order   => $order,
49
      table   => $table,
50
    }
51
  }
52
}