Having a consistent application stack for hardware from multiple vendors allows operators to build simpler, more stable networks. However, due to the limitations of low cost, fixed-function networking hardware, creating portable controlplane software with current SDN standards requires accepting limited functionality, navigating inconsistent implementations, or using powerful, flexible hardware that is prohibitively expensive in many scenarios. This paper describes Shoehorn, a system for creating portable SDN control-plane software for low cost hardware. Shoehorn allows control-plane software to define a hardware-agnostic virtual pipeline in P4 that can be algorithmically translated to control diverse low-cost hardware without a significant impact on memory usage or the rate that tables can be updated. To demonstrate the effectiveness of Shoehorn, we created virtual pipelines for a variety of existing control-plane software, and mapped them to low cost hardware. We found that the virtual pipelines could be supported by hardware from multiple vendors in almost all cases.