If there's an "updatedn" definition, slapd "knows" it's a slurpd slave and
requires structuralObjectClass (presumably from the master) on ADD
operations (and possibly others?) If there's no "updatedn", it's a slurpd
master (or standalone) and the internal attributes aren't required.
A glance through the source shows that (in 2.2) either updatedn or
syncrepl statements make the slapd think it's a "shadow". As for knowing
it's a master, I'd guess the logic is that if it's not a slave (ie no
updatedn and no syncrepl), it's a master.