hep

Crates.iohep
lib.rshep
version0.1.2
sourcesrc
created_at2021-05-21 04:56:41.033213
updated_at2021-05-24 01:14:38.598815
descriptionhep protocol parsing,support hep v1/v2/v3
homepage
repositoryhttps://github.com/mroject/hep
max_upload_size
id400214
size52,000
mroject (mroject)

documentation

https://github.com/mroject/hep/blob/main/README.md

README

hep

use HEP Network Protocol Specification

HEP v3 (Homer Encapsulation Protocol Version 3) transmits packets over UDP/TCP/SCTP connections.

Support HEP v1 HEP v2 HEP v3.

HEP v2 just support ipv4.

hep v1 format:

index remark
0 hep version
1.. packet payload

hep v2 format:

index remark
0 hep version, static value: 2
1 hep header length
2 ip protocol family
3 translation type
4-5 source port
6-7 destination port
8-11 source ip
12-15 destination ip
16-19 time-stamp seconds
20-23 time-stamp micro seconds offset
24-27 capture id
28.. packet payload

hep v3 format:

please see https://github.com/sipcapture/HEP

Examples

use hep::parse_packet;
use std::net::UdpSocket;

fn main() -> std::io::Result<()> {

    let socket = UdpSocket::bind("169.254.165.11:9060").expect("couldn't bind to address");
    loop {
        let mut buffer = [0x0; 0xdbba0];
        let (number_of_bytes, src_addr) =
            socket.recv_from(&mut buffer).expect("Didn't receive data");
        let filled_buf = &mut buffer[..number_of_bytes];

        /// data allways return Hep v3 format.
        ///     :if hep v1 or v2, futrue is default value.
        ///     :Hep v3 format,see sturct Chunk
        let data = parse_packet(&filled_buf);
        
        match data {
            Ok(chunk) => {
                println!("Message length:{}", &chunk.packet_payload.len());
                if chunk.packet_payload.len() > 6 {
                    println!(
                        "Received Hep(sip) Message from IP:{}, CaptureId:{}\n{}",
                        src_addr, 
                        chunk.capture_agent_id, 
                        chunk.packet_payload
                    );
                } else {
                    println!(
                        "Received Hep(Keepalive) Message from IP:{}, CaptureId:{}.\n",
                        src_addr, 
                        chunk.capture_agent_id
                    );
                }
            }
            Err(_) => {
                println!(
                    "Received Hep Message from IP:{}\n ignore data.\r\n\r\n",
                    src_addr
                );
            }
        }
    }
}

upgrade version:

0.1.0:

create version.

0.1.1:

publish version, add readme.md.

0.1.2:

fix readme.md.

Commit count: 6

cargo fmt