Hola.
En realidad, deberíamos ir un paso antes en el razonamiento: qué motivaría insertar en la caché de ARP algo que ya está en ella? Primero se debe buscar en la caché el dato que se necesita, si no está, se consigue, se agrega en la caché y se usa.
El hecho que inserte repetido muestra que no se chequea porque no se espera que eso ocurra.
Saludos.
Hola.
Complementando la respuesta del Leo, pueden ver que la descripción de la función insertar dice lo siguiente:
/* This method performs two functions:
1) Looks up this IP in the request queue. If it is found, returns a pointer
to the sr_arpreq with this IP. Otherwise, returns NULL.
2) Inserts this IP to MAC mapping in the cache, and marks it valid. */
Es decir, si había paquetes IP esperando por esa nueva información, devuelve todos esos paquetes para así puedan ser enviados. Luego, agrega la asociación.