コード例 #1
0
ファイル: udp.py プロジェクト: luferra/scn-openflow-driver
def buildRequest(src, dst, payload='', ipId=0):
    udpPkt = Udp()
    udpPkt.srcport = src[2]
    udpPkt.dstport = dst[2]
    if isinstance(payload, str):
        udpPkt.len += len(payload)
    else:
        udpPkt.len += len(payload.hdr())
    udpPkt.set_payload(payload)
    udpPkt.parsed = True

    ipPkt = Ipv4()
    ipPkt.flags = Ipv4.DF_FLAG
    ipPkt.srcip = src[1]
    ipPkt.dstip = dst[1]
    ipPkt.id = ipId
    ipPkt.protocol = Ipv4.UDP_PROTOCOL
    ipPkt.set_payload(udpPkt)
    ipPkt.iplen += udpPkt.len
    ipPkt.parsed = True

    udpPkt.csum = checksum(udpPkt)

    ethPkt = Ethernet()
    ethPkt.src = src[0]
    ethPkt.dst = dst[0]
    ethPkt.type = Ethernet.IP_TYPE
    ethPkt.set_payload(ipPkt)
    ethPkt.parsed = True

    return ethPkt
コード例 #2
0
ファイル: udp.py プロジェクト: luferra/scn-openflow-driver
def buildUdpResponse(req, packet, **kwargs):
    reqUdp = req.find(name)
    if reqUdp is None:
        return None

    resp = Udp()
    resp.srcport = reqUdp.dstport
    resp.dstport = reqUdp.srcport

    if isinstance(packet, str):
        resp.len += len(packet)
    else:
        resp.len += len(packet.hdr(packet.payload))

    resp.set_payload(packet)

    return resp