libipmp <--> in.mpathd communication not 64bit safe
libipmp and in.mpathd communicate by copying structs and arrays comprising the IPMP state across a TCP socket. The in.mpathd daemon is always built as 32bit, and when building a 64bit libipmp it will just fail to communicate correctly. The same problem would arise would we build in.mpathd as 64bit without also changing all libipmp consumers to 64bit at the same time.
I didn't want to completely change the way libipmp and in.mpathd communicate, like changing it to pass nvlists across a door. Instead I added explicit padding to some of the data structures, and for the more complicated cases I added bitness-independent duplicates of data structures to be used for sending and receiving data.
I tested this by setting up IPMP over two vnics in a zone and running both a 32bit and 64bit ipmpstat.
Updated by Electric Monk 10 months ago
- Status changed from New to Closed
- % Done changed from 0 to 100
commit 80d556f9fa4f5a4857a6619909d286fb17e240f7 Author: Hans Rosenfeld <email@example.com> Date: 2021-09-03T19:14:57.000Z 13995 libipmp <--> in.mpathd communication not 64bit safe Reviewed by: Robert Mustacchi <firstname.lastname@example.org> Reviewed by: Gordon Ross <Gordon.W.Ross@gmail.com> Approved by: Dan McDonald <email@example.com>