estrutura de dados – Perdendo a referência em arquivos .h em C

Estou implementando para um trabalho uma lista de Clientes, através de uma lista duplamente-encadeada (obrigatório). Estou usando arquivos headers .h em #C.

A seguir mostro a função add_cliente presente na pasta “cliente.c”, assim como “cliente.h” já tem os devidos protótipos. Os includes estão todos corretos, o problema que me deparei através do debug é que qnd saio da função add_cliente e volto para a main.c, meu inicio da lista representado por cliente, perde a referencia e passa a apontar para NULL novamente, ou seja, minha lista sempre está vazia. Já tentei usando ponteiro e ponteiro de ponteiro para cliente.

int add_cliente(Cliente *cliente, char nome(), char cpf(), char tel(), Endereco endereco, Data dt_nasc){

Cliente *novo = (Cliente*) malloc(sizeof(Cliente));
if(!novo){
    printf("Sem memória.n");
    return 0;
}

strcpy(novo->nome, nome);
strcpy(novo->cpf, cpf);
novo->dt_nasc = dt_nasc;
strcpy(novo->telefone, tel);
novo->endereco = endereco;

novo->prox = NULL;
novo->ant = NULL;

if(cliente == NULL){
    cliente = novo;
}
else{
    Cliente *aux = cliente;

    novo->prox = aux;
    aux->ant = novo;
    cliente = novo;
}

}