In Software Defined Networks, where the network control plane can be programmed by updating switch rules, consistently updating switches is a challenging problem. In a per-packet consistent update (PPC), a packet either matches the new rules added or the old rules to be deleted, throughout the network, but not a combination of both. PPC must be preserved during an update to prevent packet drops and loops, provide waypoint invariance and to apply policies consistently. No algorithm exists today that confines changes required during an update to only the affected switches, yet preserves PPC and does not restrict applicable scenarios. We propose a general update algorithm called PPCU that preserves PPC, is concurrent and provides an all-or-nothing semantics for an update, irrespective of the execution speeds of switches and links, while confining changes to only the affected switches and affected rules. We use data plane time stamps to identify when the switches must move from the old rules to the new rules. For this, we use the powerful programming features provided to the data plane by the emerging programmable switches, which also guarantee line rate. We prove the algorithm, identify its significant parameters and analyze the parameters with respect to other algorithms in the literature.