plumber 0.0.5

plumber is a shim that adds pluggable service discovery to legacy systems without modifying their code.
Documentation
extern crate libc;
use self::libc::types::os::common::bsd44::{sockaddr};

pub fn sockaddr_to_port_ip(address: *mut sockaddr) -> (u16, [u8;4]) {
    let data = unsafe { (*address).sa_data };
    ((data[0] as u16) << 8 | (data[1] as u16),
     [data[2], data[3], data[4], data[5]])
}

pub fn port_ip_to_sa_data(port: u16, ip: [u8;4]) -> [u8;14] {
    let mut sa_data: [u8; 14] = [0; 14];
    sa_data[0] = (port >> 8) as u8;
    sa_data[1] = port as u8;
    sa_data[2] = ip[0];
    sa_data[3] = ip[1];
    sa_data[4] = ip[2];
    sa_data[5] = ip[3];
    sa_data
}