In file udatapath.c
dpid = strtoll(optarg, NULL, 12);
This will cause a mistake due to this is a 12 decimal conversion.
For instance, dpid will be NULL while dpid = 0xC or 0xD.
Furthermore, some switches cannot be created
Therefore, I think it should be dpid = strtoll(optarg, NULL, 16);