Moving machines between subnets yesterday, I was faced with the problem of a box completing the boot process and then hanging just before login was reached. No message, no log entry and no warnings. The only thing shown on the console was miscellaneous smb and normal nmb browse master messages but nothing concerning a duplicate IP.
The conflict arose when before moving the box from subnet to subnet the last thing I did before shutting the machine down was to use yast so set the IP of the box to the new subnet. I was certain (I thought) that the assigned IP wasn't used. Several hours later when the box was started on the new subnet, thinking about a possible IP conflict was the last thing on my mind. Nevertheless, the box would not boot.
To investigate I booted to repair mode and started shutting down the activation of processes in reverse order of activation to eliminate messages on the console and hopefully find out why the box wouldn't reach login. (shutting down xinetd, smb, ksysguardd, etc..) Nothing provided a glimpse of the error. (There was one obscure smb socket message that hinted at an IP conflict, but I doubt anyone other than samba developers would have clicked to the relationship)
Finally, just shooting in the dark, I started yast and started picking through the settings. Somewhat on a whim, I decided to step through the network configuration again. Global, Overview and Routing were fine so I decided to edit the adapter configuration. All settings were fine. Just by chance, instead of clicking "abort" to leave the settings unchanged, I decided to click "finish" and -- Wham! -- yast issued the "Address already taken on network" error message that identified the conflict. Just exactly what yast should have done. Problem solved.
In the openSuSE boot process, when the network card is activated, this same check should be performed and a message displayed and logged concerning the conflict. In its current state the boot process proceeds right through network activation without giving any indication of a conflicting IP. (I know, I watched the boot messages for the network probably 10 times during this process).
The boot process needs to be smart enough to conduct this check and warn when a conflict occurs. It seems like this would just required taking the few lines of code from the yast2 card configuration check and putting it in the network activation script. Yes, I know this is just a check to protect people from their own stupidity, but that is what good software is supposed to do.
I added https://bugzilla.novell.com/show_bug.cgi?id=526495