There's a few ways you could do it, either approach would work.
1) Keep with the 'standard' way of determining if the host is up or down via ICMP (pinging it). In this approach you come up with your own plugin that you pass parameters to that's a service on the host -- say it's a service named Link Status or something. When this check fails and returns critical, Nagios tries pinging the server, that fails, and it knows the host is down
2) Make your own script for checking if the host is up/down that takes some arguments and tests the status of the link. You just need to write the script such that it'll accept arguments for what switch port to try, and in your host definition, where the check_command goes, you pass in those parameters via $ARG1$, $ARG2$, etc. etc.
Both approaches work though and accomplish the same thing. The only downside with approach #2 is that you might not get notified properly if a host is down -- there are plenty of cases where the OS crashes and all the network links are still active. In that scenario, you'd get alerted about all of the services not responding, but not that the host was down.