Ooh, I like this.

We were talking this over at my work, and thought that there may be a case where a host *only* had PPP private interfaces. In that case, the first loop (`privateaddress == nil`) could pick one of those up. If a later loop found a non-PPP private interface, it would then overwrite it.

This may be more complicated than needed. We couldn't think of a reason why one would want Chef to ever use a PPP address for automation, so perhaps this should be changed to always exclude virtual interfaces.