= The switch Statement .Syntax [source,unlang] ---- switch { case { [ statements-1 ] } case { [ statements-2 ] } case { [ statements-3 ] } } ---- A `switch` statement causes the server to evaluate _expansion_, which can be an xref:attr.adoc[&Attribute-Name] or xref:condition/operands.adoc[data]. The result is compared against _match-1_ and _match-2_ to find a match. If no string matches, then the server looks for the default xref:case.adoc[case] statement, which has no associated match. The matching is done via equality. The `switch` statement is mostly syntactic sugar and is used to simplify the visual form of the configuration. It is mostly equivalent to the following use of xref:if.adoc[if] statements: .Nearly equivalent syntax [source,unlang] ---- if ( == ) { [ statements-1 ] } elsif ( == ) { [ statements-2 ] } else { [ statements-3 ] } ---- The only difference between the two forms is that for a `switch` statement, the _expansion_ is evaluated only once. For the equivalent xref:if.adoc[if] statement, the _expansion_ is evaluated again for every xref:if.adoc[if]. If a matching xref:case.adoc[case] is found, the statements within that xref:case.adoc[case] are evaluated. If no matching xref:case.adoc[case] is found, the `case` section with no "match" is evaluated. If there is no such `case { ...}` subsection, then the `switch` statement behaves as if the `case {...}` section was empty. //// For compatibility with version 3, and empty `case` statement can also be used instead of `default`. //// The _match_ text for the xref:case.adoc[case] statement can be an xref:attr.adoc[&Attribute-Name] or xref:type/index.adoc[data]. No statement other than xref:case.adoc[case] can appear in a `switch` statement, and the xref:case.adoc[case] statement cannot appear outside of a `switch` statement. .Example [source,unlang] ---- switch &User-Name { case "bob" { reject } case { ok } } ---- // Copyright (C) 2020 Network RADIUS SAS. Licenced under CC-by-NC 4.0. // Development of this documentation was sponsored by Network RADIUS SAS.