since you have the previous flags saved in the variable v, all you have to do is:
fcntl(sd, F_SETFD, v);
but as an aside, lets say you had done this:
v = fcntl(sd, F_GETFD, 0);
v |= O_NONBLOCK;
now if you wanted to remove the nonblocking flag from v, you would go
v &= ~O_NONBLOCK
that would clear the O_NONBLOCK flag. remember flags are just bits that
have been "turned on", meaning set to 1. to turn off a bit you just set it back to 0.
the '~' complements O_NONBLOCK, setting all the bits that were 0 to 1, and the
bits that were 1 to 0. then when you '&=' it with v this has the effect of setting
the bit in v for O_NONBLOCK to 0.