Sto studiando il codice di un echo server.
Non sono ferratissimo in C, ma queste righe mi sembrano proprio incomprensibili

1) tcp_accept(pcb, echo_accept);

già qui... che significa passare una funzione come parametro?
il prototipo è:

void tcp_accept(struct tcp_pcb *pcb,
err_t (* accept)(void *arg, struct tcp_pcb *newpcb,
err_t err))

il primo parametro è una struttura e il secondo? è una funzione?
E poi... i parametri come li passa? Nella riga 1) echo_accept nn ha parametri?