Ejemplo n.º 1
0
PPPoE::vendor_spec_type PPPoE::vendor_spec_type::from_option(const tag& opt) {
    if (opt.data_size() < sizeof(uint32_t)) {
        throw malformed_option();
    }
    vendor_spec_type output;
    InputMemoryStream stream(opt.data_ptr(), opt.data_size());
    output.vendor_id = stream.read_be<uint32_t>();
    stream.read(output.data, stream.size());
    return output;
}
Ejemplo n.º 2
0
PPPoE::vendor_spec_type PPPoE::vendor_spec_type::from_option(const tag &opt) {
    if(opt.data_size() < sizeof(uint32_t))
        throw malformed_option();
    vendor_spec_type output;
    std::memcpy(&output.vendor_id, opt.data_ptr(), sizeof(uint32_t));
    output.vendor_id = Endian::be_to_host(output.vendor_id);
    output.data.assign(
        opt.data_ptr() + sizeof(uint32_t), 
        opt.data_ptr() + opt.data_size()
    );
    return output;
}
Ejemplo n.º 3
0
void PPPoE::add_tag(const tag &option) {
    _tags_size += option.data_size() + sizeof(uint16_t) * 2;
    _tags.push_back(option);
}
Ejemplo n.º 4
0
void PPPoE::add_tag(const tag& option) {
    tags_size_ += static_cast<uint16_t>(option.data_size() + sizeof(uint16_t) * 2);
    tags_.push_back(option);
}