= The case Statement

.Syntax
[source,unlang]
----
case [ <match> ] {
    [ statements ]
}
----

The `case` statement is used to match data inside of a
xref:switch.adoc[switch] statement.  The `case` statement cannot be used
outside of a xref:switch.adoc[switch] statement.


The `<match>` text can be an attribute reference such as `&User-Name`,
or it can be a xref:type/string/index.adoc[string].  If the match
text is a dynamically expanded string, then the match is performed on
the output of the string expansion.

The keyword `default` can be used to specify the default action to
take inside of a xref:switch.adoc[switch] statement.

If no `<match>` text is given, it means that the `case` statement is
the "default" and will match all which is not matched by another
`case` statement inside of the same xref:switch.adoc[switch].

.Example
[source,unlang]
----
switch &User-Name {
    case "bob" {
        reject
    }

    case &Filter-Id {
        reject
    }

    default {
        ok
    }
}
----

// Copyright (C) 2020 Network RADIUS SAS.  Licenced under CC-by-NC 4.0.
// Development of this documentation was sponsored by Network RADIUS SAS.
