Projet

Général

Profil

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

root / manifests / rules / snat4.pp @ 11bf7237

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

1 3d29a6eb tr
# manage a ipv4 snat rule
2 11bf7237 Steve Traylen
define nftables::rules::snat4 (
3 3d29a6eb tr
  String[1]
4 11bf7237 Steve Traylen
  $snat,
5 3d29a6eb tr
  Pattern[/^[a-zA-Z0-9_]+$/]
6 11bf7237 Steve Traylen
  $rulename = $title,
7 3d29a6eb tr
  Pattern[/^\d\d$/]
8 11bf7237 Steve Traylen
  $order = '70',
9 3d29a6eb tr
  String[1]
10 11bf7237 Steve Traylen
  $chain = 'POSTROUTING',
11 3d29a6eb tr
  Optional[String[1]]
12 11bf7237 Steve Traylen
  $oif = undef,
13 3d29a6eb tr
  Optional[String[1]]
14 11bf7237 Steve Traylen
  $saddr = undef,
15 a6316327 tr
  Optional[Enum['tcp','udp']]
16 11bf7237 Steve Traylen
  $proto = undef,
17 3d29a6eb tr
  Optional[Variant[String,Integer[1,65535]]]
18 11bf7237 Steve Traylen
  $dport = undef,
19 3d29a6eb tr
  Enum['present','absent']
20 11bf7237 Steve Traylen
  $ensure = 'present',
21 3d29a6eb tr
) {
22
  $oifname = $oif ? {
23
    undef   => '',
24
    default => "oifname ${oif} ",
25
  }
26
  $src = $saddr ? {
27
    undef   => '',
28
    default => "ip saddr ${saddr} ",
29
  }
30
31
  if $proto and $dport {
32
    $protocol = ''
33
    $port     = "${proto} dport ${dport} "
34
  } elsif $proto {
35
    $protocol = "${proto} "
36
    $port     = ''
37
  } elsif $dport {
38
    $protocol = ''
39
    $port     = "tcp dport ${dport} "
40
  } else {
41
    $protocol = ''
42
    $port     = ''
43
  }
44
45 11bf7237 Steve Traylen
  nftables::rule {
46 3d29a6eb tr
    "${chain}-${rulename}":
47
      ensure  => $ensure,
48
      table   => 'ip-nat',
49
      order   => $order,
50
      content => "${oifname}${src}${protocol}${port}snat ${snat}";
51
  }
52
}