@@ -16,6 +16,7 @@ use std::net::{IpAddr, Ipv4Addr, SocketAddr};
1616
1717/// IANA-registered default IPFIX collector port.
1818pub const DEFAULT_IPFIX_PORT : u16 = 4739 ;
19+ pub const DEFAULT_IPFIX_ADDR : IpAddr = IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) ;
1920
2021/// Persisted IPFIX collector configuration.
2122#[ derive( Serialize , Deserialize , Clone , PartialEq , Debug ) ]
@@ -43,26 +44,42 @@ impl MyIpfixSocket {
4344 }
4445
4546 pub fn display_name ( & self ) -> String {
46- format ! ( "{}:{}" , self . addr, self . port)
47+ let addr = if self . addr . is_empty ( ) {
48+ & DEFAULT_IPFIX_ADDR . to_string ( )
49+ } else {
50+ & self . addr
51+ } ;
52+ let port = if self . port . is_empty ( ) {
53+ & DEFAULT_IPFIX_PORT . to_string ( )
54+ } else {
55+ & self . port
56+ } ;
57+ format ! ( "{addr}:{port}" )
4758 }
4859
4960 pub fn socket_addr ( & self ) -> Result < SocketAddr , String > {
50- let port = self
51- . port
52- . parse :: < u16 > ( )
53- . map_err ( |_| format ! ( "Invalid port number: {}" , self . port) ) ?;
54- let ip_addr = self
55- . addr
56- . parse :: < IpAddr > ( )
57- . map_err ( |_| format ! ( "Invalid IP address: {}" , self . addr) ) ?;
58- Ok ( SocketAddr :: new ( ip_addr, port) )
61+ let port = if self . port . is_empty ( ) {
62+ DEFAULT_IPFIX_PORT
63+ } else {
64+ self . port
65+ . parse :: < u16 > ( )
66+ . map_err ( |_| format ! ( "Invalid port number: {}" , self . port) ) ?
67+ } ;
68+ let addr = if self . addr . is_empty ( ) {
69+ DEFAULT_IPFIX_ADDR
70+ } else {
71+ self . addr
72+ . parse :: < IpAddr > ( )
73+ . map_err ( |_| format ! ( "Invalid IP address: {}" , self . addr) ) ?
74+ } ;
75+ Ok ( SocketAddr :: new ( addr, port) )
5976 }
6077}
6178
6279impl Default for MyIpfixSocket {
6380 fn default ( ) -> Self {
6481 Self {
65- addr : IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) . to_string ( ) ,
82+ addr : DEFAULT_IPFIX_ADDR . to_string ( ) ,
6683 port : DEFAULT_IPFIX_PORT . to_string ( ) ,
6784 }
6885 }
0 commit comments