defadvice is a macro defined in ELisp. It provides a mechanism to wrap existing functions and have the wrapper called instead of the original function.
defadvice provides a mechanism for the user to define a function to be called before, after or around an existing function; instead of that existing function. It is analogous to the CLOS method combination system.
Multiple advices can be placed upon a function and they will combine to all be called. First all before methods are called, then all around methods, then all after methods. Methods are called in the order of the defadvice. Around methods can decide to terminate and not call any other methods - thus circumventing the original method and any other advice.