An admission control algorithm must coordinate between flows to provide guarantees about how the medium is shared. In wired networks, nodes can monitor the medium to see how much bandwidth is being used. However, in ad hoc networks, communication from one node may consume the bandwidth of neighboring nodes. Therefore, the bandwidth consumption of flows and the available resources to a node are not local concepts, but related to the neighboring nodes in carrier-sensing range. Current solutions do not address how to perform admission control in such an environment so that the admitted flows in the network do not exceed network capacity. In this paper, we present a scalable and efficient admission control framework - contention-aware admission control protocol (CACP) - to support QoS in ad hoc networks. We present several options for the design of CACP and compare the performance of these options using both mathematical analysis and simulation results. We also demonstrate the effectiveness of CACP compared to existing approaches through extensive simulations.