def fill_from_object(addr, space, w_address): from rpython.rlib import _rsocket_rffi as _c if isinstance(addr, rsocket.INETAddress): _, w_port = space.unpackiterable(w_address, 2) port = space.int_w(w_port) port = make_ushort_port(space, port) a = addr.lock(_c.sockaddr_in) rffi.setintfield(a, 'c_sin_port', rsocket.htons(port)) addr.unlock() elif isinstance(addr, rsocket.INET6Address): pieces_w = space.unpackiterable(w_address) if not (2 <= len(pieces_w) <= 4): raise RSocketError("AF_INET6 address must be a tuple of length 2 " "to 4, not %d" % len(pieces_w)) port = space.int_w(pieces_w[1]) port = make_ushort_port(space, port) if len(pieces_w) > 2: flowinfo = space.int_w(pieces_w[2]) else: flowinfo = 0 if len(pieces_w) > 3: scope_id = space.uint_w(pieces_w[3]) else: scope_id = 0 flowinfo = make_unsigned_flowinfo(space, flowinfo) a = addr.lock(_c.sockaddr_in6) rffi.setintfield(a, 'c_sin6_port', rsocket.htons(port)) rffi.setintfield(a, 'c_sin6_flowinfo', rsocket.htonl(flowinfo)) rffi.setintfield(a, 'c_sin6_scope_id', scope_id) addr.unlock() else: raise NotImplementedError
def htons(space, x): """htons(integer) -> integer Convert a 16-bit integer from host to network byte order. """ if x < 0: raise oefmt(space.w_OverflowError, "can't convert negative number to unsigned long") return space.newint(rsocket.htons(x))
def htons(space, x): """htons(integer) -> integer Convert a 16-bit integer from host to network byte order. """ return space.wrap(rsocket.htons(x))
def htons(space, x): """htons(integer) -> integer Convert a 16-bit integer from host to network byte order. """ return space.wrap(rsocket.htons(intmask(x)))