Awesome piece of code here. Using release 7 of HoRNDIS, I have a Nexus 4 with Cyanogenmod (Android 4.4.4) successfully configured in a "USB reverse-tether" configuration so my USB-connected phone gets network access through the wifi on a MacBook running OS X Mavericks (10.9.5).
I tried the same USB reverse-tether configuration on a MacBook Pro running 10.10.5 and release 7, but have been unable to replicate the success I had with OS X 10.9.5. In Console.app on the 10.10.5 machine I see:
`2/17/16 10:49:36.000 PM kernel[0]: USBF: 28124.225 AppleUSBEHCI::Found a transaction which hasn't moved in 5000 milliseconds on bus 0x1d, timing out! (Addr: 5, EP: 0)
2/17/16 10:49:37.000 PM kernel[0]: AppleUSBMultitouchDriver::message - kIOUSBMessagePortHasBeenReset.
2/17/16 10:49:37.000 PM kernel[0]: AppleUSBMultitouchDriver::checkStatus - received Status Packet, Payload 2: device was reinitialized
2/17/16 10:49:37.000 PM kernel[0]: AppleUSBMultitouchDriver::_deviceSetReport - DeviceRequest for reportID 0xac returned with result 0xe000404f - retrying
2/17/16 10:49:37.798 PM hidd[101]: MultitouchHID: device bootloaded
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: init: HoRNDIS tethering driver for Snow Leopard+, by Joshua Wise
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: rndisInit: their MTU 1486
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: setMaxTransferUnit: Excuse me, but I said you could have an MTU of 1486, and you just tried to set an MTU of 1500. Good try, buddy.
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: init: starting up with MTU 1486
2/17/16 10:49:38.000 PM kernel[0]: en7: attached with 4 suspended link-layer multicast membership(s)
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: message: kIOMessageServiceIsAttemptingOpen
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: message: kIOMessageServiceWasClosed
2/17/16 10:49:38.000 PM kernel[0]: en7: failed to restore 4 suspended link-layer multicast membership(s) (err=102)
2/17/16 10:49:38.000 PM kernel[0]: bridge101: attached with 4 suspended link-layer multicast membership(s)
2/17/16 10:49:38.000 PM kernel[0]: en7: promiscuous mode enable succeeded
2/17/16 10:49:38.536 PM InternetSharing[364]: BCAST is ready [en6, mtu=1500 ]
2/17/16 10:49:38.537 PM InternetSharing[364]: removed addr=fe80::c888:d6ff:fe81:1f8b on en7
2/17/16 10:49:38.537 PM InternetSharing[364]: added addr=192.168.2.1 mask=255.255.255.0 on bridge101
2/17/16 10:49:38.000 PM kernel[0]: bridge101: successfully restored 4 suspended link-layer multicast membership(s) (err=0)
2/17/16 10:49:38.541 PM InternetSharing[364]: started: [DHCP subnet=192.168.2/24 on bridge101 mtu=1486 <---> en6 mtu=1500] max-mss=1446
2/17/16 10:49:38.541 PM InternetSharing[364]: dns: 192.168.2.1
2/17/16 10:49:38.549 PM InternetSharing[364]: en6, started "natpmpd"
2/17/16 10:49:38.568 PM InternetSharing[364]: attempted to start dns proxy on en6
2/17/16 10:49:38.568 PM InternetSharing[364]: configd: com.apple.NetworkSharing.broadcast-14 has been started
2/17/16 10:49:38.571 PM mDNSResponder[90]: SetupDNSProxySkts: 55, 56, 63, 64
2/17/16 10:49:38.571 PM InternetSharing[364]: dns proxy successfully enabled
2/17/16 10:49:38.000 PM kernel[0]: 0 1 AppleUSBCDCACMData: start - Find CDC driver for ACM data interface failed
2/17/16 10:49:38.000 PM kernel[0]: 0 1 AppleUSBCDCECMData: start - Find CDC driver for ECM data interface failed
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: message: kIOMessageServiceIsAttemptingOpen
2/17/16 10:49:38.000 PM kernel[0]: HoRNDIS: message: kIOMessageServiceWasClosed
2/17/16 10:49:39.601 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:49:39.601 PM configd[49]: DHCP en7: SELECT transmit failed
2/17/16 10:49:40.674 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:49:40.674 PM configd[49]: DHCP en7: SELECT transmit failed
2/17/16 10:49:42.750 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:49:42.750 PM configd[49]: DHCP en7: SELECT transmit failed
2/17/16 10:49:46.750 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:49:46.751 PM configd[49]: DHCP en7: SELECT transmit failed
2/17/16 10:49:54.816 PM configd[49]: inet_set_autoaddr(en7, 1) failed, Resource busy (16)
2/17/16 10:49:54.817 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:49:54.817 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:49:55.981 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:49:55.982 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:49:58.795 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:49:58.795 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:50:03.818 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:50:03.818 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:50:12.404 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Device not configured (6)
2/17/16 10:50:12.404 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:50:12.406 PM configd[49]: arp_client_transmit(en7) failed, Network is down (50)
2/17/16 10:50:21.035 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Network is down (50)
2/17/16 10:50:21.036 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:50:29.813 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Network is down (50)
2/17/16 10:50:29.814 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:50:38.128 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Network is down (50)
2/17/16 10:50:38.128 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:50:46.367 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Network is down (50)
2/17/16 10:50:46.367 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:50:54.613 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Network is down (50)
2/17/16 10:50:54.613 PM configd[49]: DHCP en7: INIT transmit failed
2/17/16 10:52:03.506 PM configd[49]: inet_set_autoaddr(en7, 1) failed, Resource busy (16)
2/17/16 10:52:03.506 PM configd[49]: [bootp_transmit.c:213] bootp_transmit(): bpf_write(en7) failed: Network is down (50)
`
If I try to do a "normal" tether from the laptop through the phone, that seems to work fine: the "Nexus 4" shows up as "Connected" in the Network preference pane and I can ping from the phone to the laptop and back. Only when I then go to the Sharing preference pane and try to enable "Internet Sharing" from "Wi-Fi" to "Nexus 4" do things go south.
I was following http://www.androidjunkies.com/how-to-use-internet-via-usb-reverse-tethering-linux-and-mac-ver/ and when I run "netcfg usb0 dhcp" it eventually times out. I tried manually setting the usb0 interface on the phone to 192.168.2.2 (along with a default route) but still couldn't ping through.
Has anyone else encountered this behavior?