@@ -15,6 +15,7 @@ use crate::{
1515 neighbour:: { NeighbourMessage , NeighbourMessageBuffer } ,
1616 neighbour_table:: { NeighbourTableMessage , NeighbourTableMessageBuffer } ,
1717 nsid:: { NsidMessage , NsidMessageBuffer } ,
18+ prefix:: { PrefixMessage , PrefixMessageBuffer } ,
1819 route:: { RouteHeader , RouteMessage , RouteMessageBuffer } ,
1920 rule:: { RuleMessage , RuleMessageBuffer } ,
2021 tc:: { TcMessage , TcMessageBuffer } ,
@@ -48,7 +49,7 @@ const RTM_GETTFILTER: u16 = 46;
4849// const RTM_NEWACTION: u16 = 48;
4950// const RTM_DELACTION: u16 = 49;
5051// const RTM_GETACTION: u16 = 50;
51- // const RTM_NEWPREFIX: u16 = 52;
52+ const RTM_NEWPREFIX : u16 = 52 ;
5253// const RTM_GETMULTICAST: u16 = 58;
5354// const RTM_GETANYCAST: u16 = 62;
5455const RTM_NEWNEIGHTBL : u16 = 64 ;
@@ -225,6 +226,18 @@ impl<'a, T: AsRef<[u8]> + ?Sized>
225226 }
226227 }
227228
229+ // Prefix messages
230+ RTM_NEWPREFIX => {
231+ let err = "invalid prefix message" ;
232+ RouteNetlinkMessage :: NewPrefix (
233+ PrefixMessage :: parse (
234+ & PrefixMessageBuffer :: new_checked ( & buf. inner ( ) )
235+ . context ( err) ?,
236+ )
237+ . context ( err) ?,
238+ )
239+ }
240+
228241 RTM_NEWRULE | RTM_GETRULE | RTM_DELRULE => {
229242 let err = "invalid fib rule message" ;
230243 let msg = RuleMessage :: parse (
@@ -325,6 +338,7 @@ pub enum RouteNetlinkMessage {
325338 NewRoute ( RouteMessage ) ,
326339 DelRoute ( RouteMessage ) ,
327340 GetRoute ( RouteMessage ) ,
341+ NewPrefix ( PrefixMessage ) ,
328342 NewQueueDiscipline ( TcMessage ) ,
329343 DelQueueDiscipline ( TcMessage ) ,
330344 GetQueueDiscipline ( TcMessage ) ,
@@ -504,6 +518,7 @@ impl RouteNetlinkMessage {
504518 NewRoute ( _) => RTM_NEWROUTE ,
505519 DelRoute ( _) => RTM_DELROUTE ,
506520 GetRoute ( _) => RTM_GETROUTE ,
521+ NewPrefix ( _) => RTM_NEWPREFIX ,
507522 NewQueueDiscipline ( _) => RTM_NEWQDISC ,
508523 DelQueueDiscipline ( _) => RTM_DELQDISC ,
509524 GetQueueDiscipline ( _) => RTM_GETQDISC ,
@@ -559,6 +574,8 @@ impl Emitable for RouteNetlinkMessage {
559574 | GetRoute ( ref msg)
560575 => msg. buffer_len ( ) ,
561576
577+ NewPrefix ( ref msg) => msg. buffer_len ( ) ,
578+
562579 | NewQueueDiscipline ( ref msg)
563580 | DelQueueDiscipline ( ref msg)
564581 | GetQueueDiscipline ( ref msg)
@@ -617,6 +634,8 @@ impl Emitable for RouteNetlinkMessage {
617634 | GetRoute ( ref msg)
618635 => msg. emit ( buffer) ,
619636
637+ | NewPrefix ( ref msg) => msg. emit ( buffer) ,
638+
620639 | NewQueueDiscipline ( ref msg)
621640 | DelQueueDiscipline ( ref msg)
622641 | GetQueueDiscipline ( ref msg)
0 commit comments