# ol.client-ip.protocols

## ClientIPStrategy

Protocol for determining client IP from headers and remote address.

Returns InetAddress or nil if no valid client ip is found.

Implementations should:
* Be thread-safe and reusable across requests
* Validate configuration at creation time (throw on invalid config) 

_protocol_

[source,window=_blank](https://github.com/outskirtslabs/client-ip/blob/v0.1.x/src/ol/client_ip/protocols.clj#L5-L21)

### client-ip

```clojure
(client-ip this headers remote-addr)
```

Extract the client IP from request headers and remote address.
  
  Args:
    headers: Ring-style headers map (lowercase keys)
    remote-addr: String from Ring request :remote-addr
  
  Returns:
    InetAddress or nil if no valid client IP found.
