@@ -40,14 +40,20 @@ class IpmiCode(Enum):
4040
4141
4242class IpmiConn :
43- def __init__ (self , mmc_addr , mch_url , ipmitool_mode = False ):
43+ def __init__ (self , mmc_addr , mch_url , ipmitool_mode = False , vadatech_quirk = False ):
4444 if ipmitool_mode :
4545 interface = pyipmi .interfaces .create_interface (
4646 "ipmitool" , interface_type = "lan"
4747 )
4848 else :
49+ quirks_cfg = {}
50+ if vadatech_quirk :
51+ # Vadatech MCH is changing request sequence numbers on-the-fly,
52+ # we need to let the ipmi library know to ignore the sequence numbers
53+ quirks_cfg ["rmcp_ignore_rq_seq" ] = True
54+
4955 interface = pyipmi .interfaces .create_interface (
50- "rmcp" , keep_alive_interval = 0
56+ "rmcp" , keep_alive_interval = 0 , quirks_cfg = quirks_cfg
5157 )
5258
5359 session , target = self .mtca_mch_bridge_amc (mch_url , mmc_addr )
@@ -527,14 +533,19 @@ def main():
527533 help = "max IPMB packet size to use"
528534 " (Higher numbers give better performance, but can break depending on MCH model)" ,
529535 )
536+ parser .add_argument (
537+ "--vadatech-quirk" ,
538+ action = "store_true" ,
539+ help = "Enable ipmi library quirk for Vadatech support (ignore req seq numbers)" ,
540+ )
530541 args = parser .parse_args ()
531542
532543 if args .debug :
533544 pyipmi .logger .set_log_level (logging .DEBUG )
534545 pyipmi .logger .add_log_handler (logging .StreamHandler ())
535546
536547 try :
537- conn = IpmiConn (args .mmc_addr , args .mch_addr , ipmitool_mode = args .ipmitool )
548+ conn = IpmiConn (args .mmc_addr , args .mch_addr , ipmitool_mode = args .ipmitool , vadatech_quirk = args . vadatech_quirk )
538549 except Exception as e :
539550 print (e )
540551 sys .exit (1 )
0 commit comments