rust/dhcp: convert to nom 8

Ticket: #8036
pull/14207/head
Jason Ish 1 week ago
parent 854201703e
commit 4b09622ebc

@ -1,4 +1,4 @@
/* Copyright (C) 2018 Open Information Security Foundation /* Copyright (C) 2018-2025 Open Information Security Foundation
* *
* You can copy, redistribute or modify this Program under the terms of * You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free * the GNU General Public License version 2 as published by the Free
@ -18,10 +18,10 @@
use std::cmp::min; use std::cmp::min;
use crate::dhcp::dhcp::*; use crate::dhcp::dhcp::*;
use nom7::bytes::streaming::take; use nom8::bytes::streaming::take;
use nom7::combinator::verify; use nom8::combinator::verify;
use nom7::number::streaming::{be_u16, be_u32, be_u8}; use nom8::number::streaming::{be_u16, be_u32, be_u8};
use nom7::IResult; use nom8::{IResult, Parser};
pub struct DHCPMessage { pub struct DHCPMessage {
pub header: DHCPHeader, pub header: DHCPHeader,
@ -90,14 +90,14 @@ pub fn parse_header(i: &[u8]) -> IResult<&[u8], DHCPHeader> {
let (i, txid) = be_u32(i)?; let (i, txid) = be_u32(i)?;
let (i, seconds) = be_u16(i)?; let (i, seconds) = be_u16(i)?;
let (i, flags) = be_u16(i)?; let (i, flags) = be_u16(i)?;
let (i, clientip) = take(4_usize)(i)?; let (i, clientip) = take(4_usize).parse(i)?;
let (i, yourip) = take(4_usize)(i)?; let (i, yourip) = take(4_usize).parse(i)?;
let (i, serverip) = take(4_usize)(i)?; let (i, serverip) = take(4_usize).parse(i)?;
let (i, giaddr) = take(4_usize)(i)?; let (i, giaddr) = take(4_usize).parse(i)?;
let (i, clienthw) = take(16_usize)(i)?; let (i, clienthw) = take(16_usize).parse(i)?;
let (i, servername) = take(64_usize)(i)?; let (i, servername) = take(64_usize).parse(i)?;
let (i, bootfilename) = take(128_usize)(i)?; let (i, bootfilename) = take(128_usize).parse(i)?;
let (i, magic) = take(4_usize)(i)?; let (i, magic) = take(4_usize).parse(i)?;
Ok(( Ok((
i, i,
DHCPHeader { DHCPHeader {
@ -122,9 +122,9 @@ pub fn parse_header(i: &[u8]) -> IResult<&[u8], DHCPHeader> {
pub fn parse_clientid_option(i: &[u8]) -> IResult<&[u8], DHCPOption> { pub fn parse_clientid_option(i: &[u8]) -> IResult<&[u8], DHCPOption> {
let (i, code) = be_u8(i)?; let (i, code) = be_u8(i)?;
let (i, len) = verify(be_u8, |&v| v > 1)(i)?; let (i, len) = verify(be_u8, |&v| v > 1).parse(i)?;
let (i, _htype) = be_u8(i)?; let (i, _htype) = be_u8(i)?;
let (i, data) = take(len - 1)(i)?; let (i, data) = take(len - 1).parse(i)?;
Ok(( Ok((
i, i,
DHCPOption { DHCPOption {
@ -155,7 +155,7 @@ pub fn parse_address_time_option(i: &[u8]) -> IResult<&[u8], DHCPOption> {
pub fn parse_generic_option(i: &[u8]) -> IResult<&[u8], DHCPOption> { pub fn parse_generic_option(i: &[u8]) -> IResult<&[u8], DHCPOption> {
let (i, code) = be_u8(i)?; let (i, code) = be_u8(i)?;
let (i, len) = be_u8(i)?; let (i, len) = be_u8(i)?;
let (i, data) = take(len)(i)?; let (i, data) = take(len).parse(i)?;
Ok(( Ok((
i, i,
DHCPOption { DHCPOption {

Loading…
Cancel
Save