Projet

Général

Profil

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

root / manifests / simplerule.pp @ 316bc3f8

Historique | Voir | Annoter | Télécharger (1,2 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
){
24

    
25
  if $dport and !$proto {
26
    fail('Specifying a transport protocol via $proto is mandatory when passing a port')
27
  }
28

    
29
  if $ensure == 'present' {
30
    nftables::rule{"${chain}-${rulename}":
31
      content => epp('nftables/simplerule.epp',
32
        {
33
          'action'  => $action,
34
          'comment' => $comment,
35
          'dport'   => $dport,
36
          'proto'   => $proto,
37
        }
38
      ),
39
      order   => $order,
40
      table   => $table,
41
    }
42
  }
43
}