You can set $Conf{RsyncSshArgs} to a command that simply executes its arguments (like ssh does). However, rsync adds the host name to whatever you specify in $Conf{RsyncSshArgs}, so unfortunately this doesn't work since the first argument is the host name, and env will give an error:
$Conf{RsyncSshArgs} = ['-e', '/usr/bin/env']; # <- this doesn't work
A very bad hack would be to use something like this:
$Conf{RsyncSshArgs} = ['-e', '/usr/bin/sudo -p'];
(sudo has to be passwordless from the BackupPC user.) The -p (prompt) option expects an argument to set the password prompt (which is not used). So it consumes the host name argument appended by rsync, then runs the rest of the command like ssh does. Bingo - the client rsync gets run locally, with elevated privileges from sudo, without ssh.
An alternative would be to write a short shell/python/perl script instead that does it more cleanly - shifts the first argument off argv, and execs the rest.
From Paul:
where the "dual_commands" script first tries the host on a wired connection, and then on a wireless connection
V4 allows you to have an array for $Conf{ClientNameAlias} to support this behavior (checking several different host names in order, and picking the first one for which ping succeeds).
Craig