Programmable and cloud-native RAN: Challenges, solutions, enabling technologies, and tools