Syntax
case [ <match> ] {
	[ statements ]
}

The case statement is used to match data inside of a switch statement. The case statement cannot be used outside of a switch statement.

The <match> text can be omitted, which means that the case statement is a "default" one, and will match input which is not matched by another case statement inside of the same switch.

The <match> text can be an attribute reference such as &User-Name, or it can be a string. If the match text is a dynamically expanded string, then the match is performed on the output of the string expansion.

Note
We strongly recommend using static text for the <match> text. Matching dynamically expanded strings, host names, or external programs can degrade performance enormously.
Example
switch &Class {
	case &Proxy-State {
		...
	}

	case "%{sql:SELECT ...}" {
		...
	}

	case 0xabcdef {
		...
	}

	case {
		update reply {
			Reply-Message += "Contains %{Foreach-Variable-0}"
		}
	}
}